在primefaces中更新DataTable的问题

在primefaces中更新DataTable的问题

问题描述:

我在更新primefaces中的组件时遇到问题。这里有一个例子:在primefaces中更新DataTable的问题

  <h:form> 
      <p:panel style="width: 350px;" header="Partial Process"> 
      <p:dataTable id="tablaPersonas" var="per" value="#{manejador.lista}"> 
       <p:column style="text-align: center;"> 
        <f:facet name="header"> 
         <h:outputText value="Nombre" /> 
        </f:facet> 
        <h:outputText value="#{per.nombre}" /> 
       </p:column> 
       <p:column style="text-align: center;"> 
        <f:facet name="header"> 
         <h:outputText value="Apellido" /> 
        </f:facet> 
        <h:outputText value="#{per.apellido}" /> 
       </p:column> 
       <p:column headerText="Editar" style="text-align: center;"> 
        <p:commandButton value="Editar"/> 
       </p:column> 
      </p:dataTable> 
    </p:panel> 
      <p:commandButton value="Abrir" onclick="widgetDlgAgregar.show();"/> 

      <p:dialog header="Agregar" widgetVar="widgetDlgAgregar" width="250" height="150" closable="true"> 
       <h:panelGrid id="gridAdd" columns="2"> 
        <h:outputLabel value="Nombre:"/> 
        <p:inputText value="#{manejador.auxiliarAgregar.nombre}"/> 

        <h:outputLabel value="Apellido:"/> 
        <p:inputText value="#{manejador.auxiliarAgregar.apellido}"/> 

        <p:commandButton oncomplete="widgetDlgAgregar.hide();" update="tablaPersonas,gridAdd" value="Agregar" actionListener="#{manejador.agregarPersona}"/> 
       </h:panelGrid> 
      </p:dialog> 

     </h:form> 

正如你看到的,我点击了一个名为“Abrir”和一个对话框,命令按钮与“Agregar”为标题打开。我填写输入框,当我点击CommandButton“Agregar”时,DataTable没有更新。这是为什么发生?

哦,对不起,我想你忘记了此更新

试这应该工作

  <h:form prependId="false"> 
      <p:panel style="width: 350px;" header="Partial Process"> 
       <p:dataTable id="tablaPersonas" var="per" 
        value="#{manejador.lista}"> 
        <p:column style="text-align: center;"> 
         <f:facet name="header"> 
          <h:outputText value="Nombre" /> 
         </f:facet> 
         <h:outputText value="#{per.nombre}" /> 
        </p:column> 
        <p:column style="text-align: center;"> 
         <f:facet name="header"> 
          <h:outputText value="Apellido" /> 
         </f:facet> 
         <h:outputText value="#{per.apellido}" /> 
        </p:column> 
        <p:column headerText="Editar" style="text-align: center;"> 
         <p:commandButton value="Editar" /> 
        </p:column> 
       </p:dataTable> 
      </p:panel> 
      <p:commandButton value="Abrir" onclick="widgetDlgAgregar.show();" update="gridAdd" /> 



      <p:dialog header="Agregar" widgetVar="widgetDlgAgregar" width="250" 
       height="150" closable="true"> 
       <h:panelGrid id="gridAdd" columns="2"> 
        <h:outputLabel value="Nombre:" /> 
        <p:inputText value="#{manejador.auxiliarAgregar.nombre}" /> 

        <h:outputLabel value="Apellido:" /> 
        <p:inputText value="#{manejador.auxiliarAgregar.apellido}" /> 

        <p:commandButton oncomplete="widgetDlgAgregar.hide();" 
         update="tablaPersonas,gridAdd" value="Agregar" 
         actionListener="#{manejador.agregarPersona}" /> 
       </h:panelGrid> 
      </p:dialog> 

     </h:form> 

尝试把你的

<p:dialog header="Agregar" widgetVar="widgetDlgAgregar" width="250" height="150" closable="true">

形式外,并添加prependId = “假”到窗体<h:form prependId="false" >