I have a question about updating variable inside dataTable component, which was sended to dialog component.
I want to have dialog box with options. There are informations about user (user data editing).
ManageUsers class have UserDAO selectedUser property, UserDAO class contains User POJO (login, email etc).
ManageUsers.updateUser persists data in database.
How can I update selectedUser through inputText?
I can not use p:inplace component because I have a problem with h:forms and facelets (changing to production stage does not resolve this problem).
Glassfish: 3.1
Primefaces: 2.2
JSF: 2.1 (now MyFaces 2.1.3)
Code: Select all
<h:form prependId="false">
<p:growl id="growl"/>
<!-- Data table with all users-->
<p:dataTable id="userTable" var="u" value="#{manageUsers.users}">
<p:column headerText="login" style="width:150px" filterBy="#{u.user.login}" filterMatchMode="contains">
<h:outputText value="#{u.user.login}" />
</p:column>
<p:column headerText="email" style="width:150px" filterBy="#{u.user.email}" filterMatchMode="contains">
<h:outputText value="#{u.user.email}" />
</p:column>
<p:column headerText="apikey" style="width:150px" filterBy="#{u.user.apikey}" filterMatchMode="startsWith">
<h:outputText value="#{u.user.apikey}" />
</p:column>
<p:column headerText="Options" >
<p:commandButton update="display" oncomplete="userDialog.show()"
image="ui-icon ui-icon-search">
<f:setPropertyActionListener value="#{u}" target="#{manageUsers.selectedUser}" />
</p:commandButton>
</p:column>
</p:dataTable>
<!-- Dialog box with options-->
<p:dialog appendToBody="true" header="User Detail" widgetVar="userDialog" resizable="false"
width="500" showEffect="explode" hideEffect="explode" onCloseUpdate="growl,userTable">
<h:panelGrid id="display" columns="2" cellpadding="4">
<h:outputText value="Login" />
<p:inputText required="true" value="#{manageUsers.selectedUser.user.login}" />
<h:outputText value="Email" />
<p:inputText required="true" value="#{manageUsers.selectedUser.user.email}" />
<p:commandButton value="save and exit" action="#{manageUsers.updateUser}" update="growl" onclick="userDialog.hide()" />
</h:panelGrid>
</p:dialog>
</h:form>