Primefaces Selected Row未设置

时间:2015-03-15 22:32:12

标签: primefaces datatable selection

我确实尝试过很多方法,但无法找到解决问题的方法。 我的问题是,单击所选行的按钮以查看对话框不会设置selecteduser对象。它似乎无效。 感谢您的时间。这是我的xhtml页面。



<ui:composition template="/pages/admin/admin.xhtml"
                xmlns="http://www.w3.org/1999/xhtml"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:p="http://primefaces.org/ui">

    <ui:define name="center">
        <h:form id="updateform">
            <p:growl id="messages"/>
            <p:panel id="pnlUpdateUser" header="#{menu['menu.admin.usermanager.updateuser']}">
                <p:panelGrid columns="2" styleClass="cm_ui-panel-grid">
                    <p:outputLabel value="#{menu['menu.admin.createuser.name']}" styleClass="cm_ui-output-label"/>
                    <p:inputText styleClass="cm_input-text" value="#{userMB.userQuery.name}"/>

                    <p:outputLabel value="#{menu['menu.admin.createuser.surname']}" styleClass="cm_ui-output-label"/>
                    <p:inputText styleClass="cm_input-text" value="#{userMB.userQuery.surname}" />

                    <f:facet name="footer">
                        <p:commandButton value="#{menu.search}" action="#{userMB.queryUsers}" update=":userresultform"/>
                    </f:facet>
                </p:panelGrid>
            </p:panel>
        </h:form>
        <h:form id="userresultform">
            <p:dataTable id="userresulttable" var="u" value="#{userMB.users}"
                         rendered="#{(userMB.users.size() > 0)}">
                <f:facet name="header">
                    <p:outputLabel value="#{menu['menu.admin.updateuser.list']}"/>
                </f:facet>
                <p:column headerText="#{menu['menu.admin.createuser.id']}">
                    <h:outputText value="#{u.id}" />
                </p:column>
                <p:column headerText="#{menu['menu.admin.createuser.name']}">
                    <h:outputText value="#{u.name}" />
                </p:column>
                <p:column headerText="#{menu['menu.admin.createuser.surname']}">
                    <h:outputText value="#{u.surname}" />
                </p:column>
                <p:column headerText="#{menu['menu.admin.createuser.grade']}">
                    <h:outputText value="#{u.grade}" />
                </p:column>
                <p:column style="width:32px;text-align: center">
                    <p:commandButton update=":userresultform:useredit" oncomplete="PF('userEditDialog').show()" icon="ui-icon-search" title="guncelle">
                        <f:setPropertyActionListener value="#{u}" target="#{userMB.selectedUser}" />
                    </p:commandButton>
                </p:column>
            </p:dataTable>
            <p:dialog header="Guncelleme" widgetVar="userEditDialog" modal="true" showEffect="fade" hideEffect="fade" resizable="false"
                    appendTo="@(body)" dynamic="true">
                <p:outputPanel id="useredit" style="text-align:center;">
                    <p:panelGrid  columns="2" rendered="#{not empty userMB.selectedUser}" columnClasses="label,value">

                        <h:outputText value="Ad" />
                        <h:outputText value="#{userMB.selectedUser.name}" />

                        <h:outputText value="Soyad:" />
                        <h:outputText value="#{userMB.selectedUser.surname}" />

                        <h:outputText value="Unvan" />
                        <h:outputText value="$#{userMB.selectedUser.grade}" />
                    </p:panelGrid>
                </p:outputPanel>
            </p:dialog>
        </h:form>
    </ui:define>
</ui:composition>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:0)

如果使用append to body,则需要在对话框中添加一个表单。但是也要确保在你的xhtml中,你没有嵌套的表单,因为它们最终嵌套在客户端上,然后移动对话框&#39;这是无效的HTML

答案 1 :(得分:-1)

认为问题出在appendTo =&#34; @(body)&#34;

请将该过程添加到commandButton

 <p:commandButton update=":userresultform:useredit" process="@this" oncomplete="PF('userEditDialog').show()" icon="ui-icon-search" title="guncelle">
    <f:setPropertyActionListener value="#{u}" target="#{userMB.selectedUser}" />
</p:commandButton>

并且对于p:对话框删除appendTo并尝试

<p:dialog header="Guncelleme" widgetVar="userEditDialog" modal="true" showEffect="fade" hideEffect="fade" resizable="false"
                dynamic="true">