Jakarta ee 显示所选项目';s数据(JSF、Primefaces)

Jakarta ee 显示所选项目';s数据(JSF、Primefaces),jakarta-ee,jsf-2,primefaces,mojarra,Jakarta Ee,Jsf 2,Primefaces,Mojarra,我在使用Primefaces对话在对话中显示所选项目的数据时遇到问题。setSelectedUsers方法将启动,但对话框不会显示用户对象的数据。你知道我错过了什么吗!我看了primefaces展示,看不出哪里做错了 Primefaces 3.4、Mojarra 2.1、JavaEE6 我将感谢任何帮助。谢谢 <h:form prependId="false"> <p:dataTable id="dataTable" var="user" value="

我在使用Primefaces对话在对话中显示所选项目的数据时遇到问题。setSelectedUsers方法将启动,但对话框不会显示用户对象的数据。你知道我错过了什么吗!我看了primefaces展示,看不出哪里做错了

Primefaces 3.4、Mojarra 2.1、JavaEE6

我将感谢任何帮助。谢谢

<h:form prependId="false">
            <p:dataTable id="dataTable" var="user" value="#{userController.lazyModel}" styleClass="userDataTableStyle"
                    paginator="true" rows="10" selection="#{userController.selectedUsers}"
                    paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                    lazy="true" rowsPerPageTemplate="10,50,100,150">
            <f:facet name="header">
                User List
            </f:facet>
            <f:facet name="header">  
               Selection 
            </f:facet>  
            <p:column selectionMode="multiple" style="width:18px" />  
            <p:column>
                <f:facet name="header">
                    <h:outputText value="Username" />
                </f:facet>
                <p:commandLink value="#{user.username}" oncomplete="userDialog.show()"  title="View">
                    <f:setPropertyActionListener value="#{user}" target="#{userController.selectedUser}" />    
                </p:commandLink>
            </p:column>

            <p:column>
                <f:facet name="header">
                    <h:outputText value="Firstname" />
                </f:facet>
                <h:outputText value="#{user.firstname}" />
            </p:column>

            <p:column>
                <f:facet name="header">
                    <h:outputText value="Lastname" />
                </f:facet>
                <h:outputText value="#{user.lastname}" />
            </p:column>

            <p:column>
                <f:facet name="header">
                    <h:outputText value="Email" />
                </f:facet>
                <h:outputText value="#{user.email}" />
            </p:column>
            <f:facet name="footer">
                <p:commandButton value="Create User" action="/admin/NewUser.xhtml?faces-redirect=true" ajax="false" icon="ui-icon-star"/>
                <p:commandButton value="Delete Users" actionListener="#{userController.doDeleteUsers}" update="dataTable" icon="ui-icon-trash"/>
            </f:facet>
        </p:dataTable>
        <p:dialog header="Car Detail" widgetVar="userDialog" resizable="false" id="userDlg" >  
            <h:panelGrid id="display" columns="2" cellpadding="4" style="margin:0 auto;">   
                <h:outputText value="Username" />  
                <h:outputText value="#{userController.selectedUser.username}" style="font-weight:bold"/>   
            </h:panelGrid>  
      </p:dialog> 
     </h:form>

用户列表
挑选
Java代码

@ManagedBean(name="userController")
@ViewScoped
public class UserController implements Serializable  {

        private @EJB UserEJB userEJB;     
        private User[] selectedUsers; 
        private List<User> lazyUserList;     
        private Address address = new Address();
        private User user = new User();
        private User selectedUser;
        private LazyDataModel<User> lazyModel; 

    public UserController() {
            lazyModel = new LazyUserDataModel(lazyUserList);
    }

        public String doNewUser() {
            return "admin/NewUser.xhtml?faces-redirect=true";
        }

        public String doCreateUser() {
            userEJB.persistUser(user);
            return "UserList.xhtml?faces-redirect=true";
        }

        public void doDeleteUsers(ActionEvent actionEvent){
            userEJB.deleteUsers(selectedUsers);
        }

        public User getSelectedUser() {  
            return selectedUser;  
        }  

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

        public User[] getSelectedUsers() {  
            return selectedUsers;  
        }  

        public void setSelectedUsers(User[] selectedUsers) {  
            this.selectedUsers = selectedUsers;  
        }  

        public void onRowSelect(ActionEvent event) {
            if(selectedUser == null)
                return;
            String userName = selectedUser.getUsername();
        }

        public Address getAddress() {
            return address;
        }

        public void setAddress(Address address) {
            this.address = address;
        }

        public User getUser() {
            return user;
        }

        public void setUser(User user) {
            this.user = user;
        }

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

        public LazyDataModel<User> getLazyModel() {
            return lazyModel;
        }        
}
@ManagedBean(name=“userController”)
@视域
公共类UserController实现可序列化{
private@EJB UserEJB UserEJB;
私人用户[]选择用户;
私有列表lazyUserList;
私有地址=新地址();
私有用户=新用户();
私人用户选择用户;
私人LazyDataModel lazyModel;
公共用户控制器(){
lazyModel=新的LazyUserDataModel(lazyUserList);
}
公共字符串doNewUser(){
返回“admin/NewUser.xhtml?faces redirect=true”;
}
公共字符串doCreateUser(){
persistUser(用户);
返回“UserList.xhtml?faces redirect=true”;
}
公共无效DodeletUsers(ActionEvent ActionEvent){
userEJB.deleteUsers(selectedUsers);
}
公共用户getSelectedUser(){
返回所选的用户;
}  
public void setSelectedUser(用户选择的用户){
this.selectedUser=selectedUser;
} 
公共用户[]getSelectedUsers(){
返回所选用户;
}  
public void setSelectedUsers(用户[]selectedUsers){
this.selectedUsers=selectedUsers;
}  
public void onRowSelect(ActionEvent事件){
如果(selectedUser==null)
返回;
字符串userName=selectedUser.getUsername();
}
公共广播getAddress(){
回信地址;
}
公共无效设置地址(地址){
this.address=地址;
}
公共用户getUser(){
返回用户;
}
公共void setUser(用户){
this.user=用户;
}
公共列表getUsers(){
返回lazyUserList;
}
公共LazyDataModel getLazyModel(){
返回lazyModel;
}        
}

必须从commandLink更新对话框内容(update=“display”):


感谢Damian,在表单中添加id=“form”,并在commandlink帮助中更新=“:form:display”。干杯
<p:commandLink value="#{user.username}" update="display" oncomplete="userDialog.show()" title="View">
      <f:setPropertyActionListener value="#{user}" target="#{userController.selectedUser}" />    
</p:commandLink>