在primefaces中更新DataTable时出现问题

时间:2011-07-17 02:41:37

标签: jsf primefaces

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

            <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”的CommandButton,然后打开一个Dialogut,标题为“Agregar”。我填写输入框,当我单击CommandButton“Agregar”时,DataTable不会更新。为什么会这样?

2 个答案:

答案 0 :(得分:1)

哦对不起,我想你忘了这个更新

试试这个应该有效

            <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>

答案 1 :(得分:0)

尝试把你的

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

在表单之外,将 prependId =“false”添加到表单<h:form prependId="false" >