我是PrimeFaces(和JSF)的新手,我正在尝试根据检索到的数据更新对话框消息。
视图如下:
<p:dialog id="userDialog" header="Confirmation" widgetVar="userDialog" dynamic="true" modal="true" closable="fasle" width="680px" resizable="false">
<h:form>
<b>Email address #{userListView.email}</b> is already registered with the following user <b>#{userListView.firstName}</b> <b>#{userListView.lasttName}</b>:
<b>Please confirm that you would like to proceed with adding an additional account for this User.</b><br />
<hr />
<div class="ui-confirm-dialog-footer">
<p:commandButton value="Yes" type="button" styleClass="ui-confirmdialog-yes" icon="pi pi-check" onclick="PF('userDialog').hide()" />
<p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no" icon="pi pi-times" onclick="PF('userDialog').hide()" />
</div>
</h:form>
控制器看起来像:
@ManagedBean(name = "userListView")
@ViewScoped
public class UserListView extends DataTableListView implements Serializable {
.....some other code...
public String getFirstName() {
String firstName = "";
List<UserMembership> membershipList = getMembershipList();
if (!membershipList.isEmpty()) {
UserMembership membership = membershipList.get(0);
firstName = membership.getUser().getFirstName();
}
return firstName;
}
public String getLasttName() {
String lastName = "";
List<UserMembership> membershipList = getMembershipList();
if (!membershipList.isEmpty()) {
UserMembership membership = membershipList.get(0);
lastName = membership.getUser().getLastName();
}
return lastName;
}
public String getEmail() {
String email = "";
List<UserMembership> membershipList = getMembershipList();
if (!membershipList.isEmpty()) {
UserMembership membership = membershipList.get(0);
email = membership.getUser().getEmail();
}
return email;
}
....some other code...
}
并生成对话框为
RequestContext.getCurrentInstance().execute("showDialog(userDialog')");
对于第一个用户来说,它可以正常工作,但是当我得到另一个对话框时,它将保留第一个用户的数据,而不用当前更新。
我也尝试添加
onHide="PF('userDialog').content.empty()"
进入对话框,但这将删除整个对话框内容。
然后如何用新数据破坏并刷新该对话框?
PS。 不知道我是否需要通过
完成此操作 @PostConstruct
public void init() {}
答案 0 :(得分:1)
如果您使用的是Primefaces 7.0+,请交换已经提到的
reference_age 85 90 95
Outstanding Balance 2423.0 16350.0 13348.0
cumulative nco NaN 645.0 1107.0
为
RequestContext.getCurrentInstance().update("userDialog");
如果我可以建议您,请为PrimeFaces.current().ajax().update("userDialog");
设置一些ID,然后再使用完整的客户端ID,例如
<h:form>
BalusC已经在此线程Can I update a JSF component from a JSF backing bean method?
中回答了类似的问题答案 1 :(得分:0)
就我而言,修复程序看起来像
RequestContext.getCurrentInstance().update(":userDialog");
在.execute()
部分之后。