Jakarta ee 显示所选项目';s数据(JSF、Primefaces)
我在使用Primefaces对话在对话中显示所选项目的数据时遇到问题。setSelectedUsers方法将启动,但对话框不会显示用户对象的数据。你知道我错过了什么吗!我看了primefaces展示,看不出哪里做错了 Primefaces 3.4、Mojarra 2.1、JavaEE6 我将感谢任何帮助。谢谢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="
<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>