<p:column>
<p:commandButton id="selectButton" update="@(form)" oncomplete="userDialog.show()" icon="ui-icon-search" title="View">
<f:setPropertyActionListener value="#{book}" target="#{CreateBookBean.selectedUser}" />
</p:commandButton>
</p:column>
</p:dataTable>
</p:outputPanel>
<p:dialog header="User Detail" modal="true" widgetVar="userDialog" width="200" height="175">
<h:panelGrid columns="2" cellpadding="5">
<h:outputLabel for="fname" value="First Name: " />
<h:outputText id="fname" value="#{CreateBookBean.selectedUser.fname}" />
<h:outputLabel for="lname" value="Last Name: " />
<h:outputText id="lname" value="#{CreateBookBean.selectedUser.lname}" />
<h:outputLabel for="mobileno" value="mobile no: " />
<h:outputText id="mobileno" value="#{CreateBookBean.selectedUser.mobileno}" />
</h:panelGrid>
</p:dialog>
我最近遇到了这个例子。 数据表正在使用我输入的值正确更新。但是,当我想在对话框中显示它时,它不显示任何内容。 我实际上不明白为什么使用value =“#{CreateBookBean.selectedUser.fname}”代替value =“#{CreateBookBean.fname}”。
这是我的java代码
public class CreateBookBean {
private Book book = new Book();
private List<Book> books = new ArrayList<Book>();
private Book selectedUser;
public String reinit() {
book = new Book();
return null;
}
setters and getters are included here
}
答案 0 :(得分:0)
使用您使用的按钮中的更新属性来显示对话框,例如<p:commandButton update="dialogBoxId" . . ./>
,以便显示数据表中的项目。
答案 1 :(得分:0)
让我们将这个问题分成两部分。
<强>第一强>:
如果要显示更新的值(例如,使用h:outputText
),则需要更新此元素。更新此元素意味着,它将获取它的辅助bean的当前值。
这样做:
<p:commandButton ... update="idToUpdate1, idToUpdate2, ..." >
要获得idToUpdate
支票Naming Container in JSF2/PrimeFaces。
如果您有许多需要更新的组件,我建议将它们分组为一个NamingContainer
(例如p:outputPanel
)。因此,您只需更新NamingContainer
,而不是每个组件。
的第二强>:
#CreateBookBean.selectUser.fname
表示:“获取CreateBookBean
,获取其属性selectUser
并获取selectUser
名为fname
的属性”。
在这种情况下,您将拥有这些类布局:
public class CreateBookBean {
private Book selectedUser;
....
public Book getSelectedUser() {
return this.selectedUser;
}
}
public class Book {
private String fname;
....
public String getFname() {
this.fname;
}
}
#CreateBookBean.fname
表示:“抓取CreateBookBean
,抓取它的属性fname
”。
在这种情况下,您将拥有此类布局:
public class CreateBookBean {
private String fname;
....
public String getFname() {
return this.fname;
}
}
根据您发布的此代码,我猜CreateBookBean
有一个名为selectedUser
的属性(代码显示它:target="#{CreateBookBean.selectedUser}"
),而selectUser
有一个财产fname
。