我确实尝试过很多方法,但无法找到解决问题的方法。 我的问题是,单击所选行的按钮以查看对话框不会设置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;
答案 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">