【发布时间】:2016-10-27 14:02:24
【问题描述】:
JSF 2.2; PrimeFaces 5.3
我的目标是通过单击 X 按钮捕获用户关闭对话框,返回父页面以便刷新数据和更新表单。
我能够让 p:remoteCommand 在 DialogBean 中调用我的 confirmAndCloseDialog() 方法,但从未调用过 ParentBean 中的 onDialogReturn() 方法。为什么不调用 onDialogReturn?有什么办法可以让它工作吗?
顺便说一句,如果用户以正常方式退出对话框,即通过单击 p:commandButton (CLOSE DIALOG) 关闭对话框,那么一切都很好。
这是我的代码。
谢谢!
父页面:
<h:form>
...
<p:commandButton value="Open dialog"
id="openDialogButton"
actionListener="#{parentBean.openDialog()}"
update="@form">
<p:ajax event="dialogReturn"
listener="#{parentBean.onDialogReturn}"
update="@form"/>
</p:commandButton>
...
</h:form>
对话框页面:
<body style="height: 80%;" onunload="userClickOnX();" >
<h:form id="aForm">
<p:remoteCommand id="userClickOnX"
name="userClickOnX"
actionListener="#{dailogBean.confirmAndCloseDialog}"/>
......
<p:commandButton id="closeDialog"
value="CLOSE DIALOG"
actionListener="#{dialogBean.confirmAndCloseDialog}"/>
</h:form>
</body>
父豆
public void openDialog() {
Map<String, Object> options = new HashMap<>();
options.put("modal", true);
options.put("draggable", true);
options.put("resizable", true);
options.put("closable", true);
options.put("contentWidth", "100%");
options.put("contentHeight", "100%");
options.put("width", 1000);
options.put("height", 800);
RequestContext.getCurrentInstance().openDialog("dialog", options, null);
}
public void onDialogReturn(SelectEvent event) {
refresh data ....
}
DialogBean:
public void confirmAndCloseDialog() {
RequestContext.getCurrentInstance().closeDialog(objectForParent);
}
【问题讨论】:
标签: jsf-2 primefaces