Jsf 用户向导中的可编辑数据表,带有动态值选择查询

Jsf 用户向导中的可编辑数据表,带有动态值选择查询,jsf,primefaces,datatable,wizard,Jsf,Primefaces,Datatable,Wizard,initiate.xhtml 我正在使用primefaces向导显示应用程序的顺序流。在其中一个选项卡(即“成员详细信息”)中,我有一个可编辑的数据表。对于“名称”列,我希望用户在单击按钮时从具有名称、指定、分区的可用用户列表中选择名称 单击按钮时,我正在使用对话框中的另一个datatable 但是,单击“添加”按钮后,如何更新原始数据表中的选定值 <h:body> <h:form id="compositionmaster">

initiate.xhtml

我正在使用primefaces向导显示应用程序的顺序流。在其中一个选项卡(即“成员详细信息”)中,我有一个可编辑的数据表。对于“名称”列,我希望用户在单击按钮时从具有名称、指定、分区的可用用户列表中选择名称

单击按钮时,我正在使用对话框中的另一个datatable

但是,单击“添加”按钮后,如何更新原始数据表中的选定值

      <h:body>
        <h:form id="compositionmaster">
            <p:growl id="growl" sticky="true" showDetail="true"/>
            <p:wizard widgetVar="wiz" flowListener="#{userWizard.onFlowProcess}" step="address" >
                 <p:tab id="address" title="Member Details">
                    <p:panel header="Member Selection" >
                        <h:messages errorClass="error"/>


                        <p:dataTable id="outputtable" var="membertable" value="#{tableBean.compositionRoles}" editable="true" editMode="cell" >

                            <p:column headerText="Role" >
                                <h:outputText value="#{membertable.role}" />

                            </p:column>

                            <p:column headerText="Type">
                                <p:cellEditor>
                                <f:facet name="input">
                                    <p:selectOneMenu value="#{userWizard.user.type}"> 
                                    <f:selectItem itemLabel="--Select--" itemValue="0" />  
                                    <f:selectItem itemLabel="Internal" itemValue="1" />
                                    <f:selectItem itemLabel="External" itemValue="2" />
                                    </p:selectOneMenu>
                                </f:facet>
                                <f:facet name="output">
                                    <h:outputText value="#{userWizard.user.type}" />
                                </f:facet>
                                </p:cellEditor>
                            </p:column>

                            <p:column id="namecol" headerText="Name">

                                <p:commandButton id="basic" value="..." onclick="dlg.show();" type="button" />

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

                            </p:column>

                            <p:column id="divcol" headerText="Section/Division">
                            <p:cellEditor>
                            <f:facet name="output">
                                <h:outputText value="#{userBean.selectedUser.division}" />
                            </f:facet>
                            <f:facet name="input">
                                <h:inputText value="#{userBean.selectedUser.division}" />
                            </f:facet>
                            </p:cellEditor>
                            </p:column>



                        </p:dataTable>

                        <p:dialog id="dialog" header="UserList" widgetVar="dlg" >
                            <h:form id="userform">
                                <p:dataTable  var="user" value="#{userBean.users}" selection="#{userBean.selectedUser}" rowKey="#{user.name}" >
                                    <p:column selectionMode="single"/>
                                    <p:column headerText="Name">
                                        <h:outputText value="#{user.name}" />
                                    </p:column>
                                    <p:column headerText="Division">
                                        <h:outputText value="#{user.division}" />
                                    </p:column>
                                    <f:facet name="footer">
                                        <p:commandButton update=":compositionmaster:namecol" ajax="true" onclick="dlg.hide()" value="Add" id="addmember"/>
                                    </f:facet>  
                                </p:dataTable>
                            </h:form>
                        </p:dialog> 
} UserBean.java

package office;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import java.io.Serializable;
import committee.User;
import committee.UserDataModel;
import java.util.List;
import java.util.ArrayList;

@ManagedBean
@ViewScoped
public class UserBean implements Serializable{

private List<User> users;

public UserBean() {

users = new ArrayList<User>();
users.add(new User("Kanika","Development"));
users.add(new User("Shreya","Development"));
users.add(new User("Tushti","Development"));
users.add(new User("abc","Marketing"));

}
public List<User> getUsers() {
return users;
}

public void setUsers(List<User> users) {
    this.users = users;
}

private User selectedUser;

private UserDataModel userDataModel;

public UserDataModel getUserDataModel() {
    return userDataModel;
}

public void setUserDataModel(UserDataModel userDataModel) {
    this.userDataModel = userDataModel;
}

public User getSelectedUser() {
    return selectedUser;
}

public void setSelectedUser(User selectedUser) {
    this.selectedUser = selectedUser;
}
打包办公室;
导入javax.faces.bean.ManagedBean;
导入javax.faces.bean.ViewScoped;
导入java.io.Serializable;
进口委员会.用户;
导入委员会.UserDataModel;
导入java.util.List;
导入java.util.ArrayList;
@ManagedBean
@视域
公共类UserBean实现了可序列化{
私人名单用户;
公共用户bean(){
users=newarraylist();
添加(新用户(“Kanika”、“开发”);
添加(新用户(“Shreya”、“开发”);
添加(新用户(“Tushti”、“开发”);
添加(新用户(“abc”、“营销”);
}
公共列表getUsers(){
返回用户;
}
公共用户(列表用户){
this.users=用户;
}
私人用户选择用户;
私有UserDataModel UserDataModel;
公共UserDataModel getUserDataModel(){
返回userDataModel;
}
public void setUserDataModel(UserDataModel UserDataModel){
this.userDataModel=userDataModel;
}
公共用户getSelectedUser(){
返回所选的用户;
}
公共无效设置selectedUser(用户选择的用户){
this.selectedUser=selectedUser;
}

}

您是否尝试过“更新”属性?我尝试过使用更新,但在对话框窗口关闭后,它不会显示在数据表中。您应该发布该代码以获得更多建议。我更改了代码。。我试图做的是我有一个datatable,其中有一个name列。现在,我必须单击按钮来查看包含datatable中现有用户记录的对话框。选择行时,它将保存在UserBean的selectedUser属性中。在原始数据表中。我给出了相同的值,但我不知道如何在不影响其他值的情况下更新所选列您确定问题来自datatable而不是从bean更新吗?
package office;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import java.io.Serializable;
import committee.User;
import committee.UserDataModel;
import java.util.List;
import java.util.ArrayList;

@ManagedBean
@ViewScoped
public class UserBean implements Serializable{

private List<User> users;

public UserBean() {

users = new ArrayList<User>();
users.add(new User("Kanika","Development"));
users.add(new User("Shreya","Development"));
users.add(new User("Tushti","Development"));
users.add(new User("abc","Marketing"));

}
public List<User> getUsers() {
return users;
}

public void setUsers(List<User> users) {
    this.users = users;
}

private User selectedUser;

private UserDataModel userDataModel;

public UserDataModel getUserDataModel() {
    return userDataModel;
}

public void setUserDataModel(UserDataModel userDataModel) {
    this.userDataModel = userDataModel;
}

public User getSelectedUser() {
    return selectedUser;
}

public void setSelectedUser(User selectedUser) {
    this.selectedUser = selectedUser;
}