首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >编辑后不刷新数据列表。

编辑后不刷新数据列表。
EN

Stack Overflow用户
提问于 2016-07-12 05:54:09
回答 1查看 1.8K关注 0票数 2

我想在编辑元素之后刷新datalist。我使用@Postconstruct来初始化数据,但是徒劳无功。

以下代码显示数据列表:

代码语言:javascript
运行
复制
<h:form>

  <p:dataTable widgetVar="developpeur" value="#{manageUrlSiteTestBean.sitewebs}" var="dev"   style="margin-bottom:20px">
 <f:facet name="header">
Les tests de la website url </f:facet>

   <p:column headerText="titre">
 #{dev.title}
 </p:column>


 <p:column>
 <p:commandButton value="edit"  update=":form">
  <f:setPropertyActionListener target="#{manageUrlSiteTestBean.siteweb}" value="#{dev}"></f:setPropertyActionListener>
   <f:setPropertyActionListener target="#{manageUrlSiteTestBean.form}" value="true"></f:setPropertyActionListener>
 </p:commandButton>
 </p:column>
 </p:dataTable>
 </h:form>

代码的第二部分是一个表单,它检索选择用于编辑的数据。

代码语言:javascript
运行
复制
<h:panelGrid id="form">

 <h:form rendered="#{manageUrlSiteTestBean.form}" >
 <p:panel header="Modification">
 <h:panelGrid columns="1">

 <p:outputLabel value="Name" id="lcin"/>
 <p:inputText id="cink" value="#{manageUrlSiteTestBean.siteweb.title}" required="true" >
 </p:inputText>

  </h:panelGrid>
 <p:commandButton value="Validate" action="#{manageUrlSiteTestBean.validate()}" />
  </p:panel>
  </h:form>
 </h:panelGrid> 

下面的代码是支持bean

代码语言:javascript
运行
复制
@ManagedBean
@ViewScoped
public class ManageUrlSiteTestBean implements Serializable{

    public ManageUrlSiteTestBean(){

    }
    private static final long serialVersionUID = 1L;
    @EJB
    ManageUrlSiteTestLocal local;
    private SiteWebImpose siteweb = new SiteWebImpose() ;
    private List<SiteWeb> sitewebs=new ArrayList<SiteWeb>();
    private boolean form;
    public ManageUrlSiteTestLocal getLocal() {
        return local;
    }
    public void setLocal(ManageUrlSiteTestLocal local) {
        this.local = local;
    }
    public List<SiteWeb> getSitewebs() {
        return sitewebs;
    }
    public void setSitewebs(List<SiteWeb> siteweb) {
        this.sitewebs = siteweb;
    }
    public SiteWebImpose getSiteweb() {
        return siteweb;
    }
    public void setSiteweb(SiteWebImpose siteweb) {
        this.siteweb = siteweb;
    }   
    public boolean isForm() {
        System.out.println("nn");
        return form;
    }
    public String validate(){
        local.updateUrlSite(siteweb);
        form=false;
        siteweb=new SiteWebImpose() ;
        init();
        return null;        
    }
    public void setForm(boolean form) {
        this.form = form;
    }   
    @PostConstruct
    public void init(){
        setSitewebs(local.listerUrlSiteTests());
    }
}

我怎样才能做到这一点?

EN

Stack Overflow用户

回答已采纳

发布于 2016-07-12 06:43:24

当你触发按钮的验证动作时,你实际上不会更新你的列表。因此,列表将被更新,好的,但是您也需要在html中对其进行ajax更新。尝试像这样的事情

代码语言:javascript
运行
复制
<p:commandButton value="Validate" action="#{manageUrlSiteTestBean.validate()}" update=":form:developpeur"/>

我不记得您是否也必须为datatable声明一个id,或者它只适用于widgetVar,但是我认为您也需要一个id,所以将id="developpeur"放在您的dataTable中。并在第一个表单中添加id="form"

查看这里有关ajax提交和非ajax提交的示例。

http://www.primefaces.org/showcase/ui/button/commandButton.xhtml

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38320969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档