未设置 Primefaces 选定行
Primefaces Selected Row is not set
我确实尝试了很多方法,但找不到解决我问题的方法。
我的问题是,单击所选行的按钮以查看对话框不会设置 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>
认为问题出在 appendTo="@(body)"
请将进程添加到 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:dialog 删除 appendTo 并尝试
<p:dialog header="Guncelleme" widgetVar="userEditDialog" modal="true" showEffect="fade" hideEffect="fade" resizable="false"
dynamic="true">
如果您使用append to body 是true,您需要在对话框中添加一个表单。但也要确保在你的 xhtml 中,你没有嵌套表单,因为它们在对话框 'moved' 之前最终嵌套在客户端上,这是无效的 html
我确实尝试了很多方法,但找不到解决我问题的方法。 我的问题是,单击所选行的按钮以查看对话框不会设置 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>
认为问题出在 appendTo="@(body)"
请将进程添加到 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:dialog 删除 appendTo 并尝试
<p:dialog header="Guncelleme" widgetVar="userEditDialog" modal="true" showEffect="fade" hideEffect="fade" resizable="false"
dynamic="true">
如果您使用append to body 是true,您需要在对话框中添加一个表单。但也要确保在你的 xhtml 中,你没有嵌套表单,因为它们在对话框 'moved' 之前最终嵌套在客户端上,这是无效的 html