Primefaces 5.0,JSF 2.2,Wildfly 8.1
以下用例:
单击视图中的命令按钮(带有一些参数)
bean方法在数据库中查找内容-如有必要,将显示dialog1。在dialog1中,有一个窗体和一个命令按钮。
单击dialog1中的命令按钮,bean方法将在数据库中查找内容。
根据Bean方法的结果,将关闭Dialog1并显示dialog2。
bean1.java:
public void buttonClicked() {
Map<String, Object> options = new HashMap<>();
options.put("modal", true);
options.put("widgetVar", "dialog1");
options.put("id", "dlg1");
if(somethingTrue()) {
RequestContext.getCurrentInstance().openDialog("dialog1.xhtml", options, null);
}
}
一切都很好。出现Dialog1。
dialog1.xhtml:
<h:body>
<h:form>
<p:commandButton value="Button" actionListener="#{bean2.dialog1ButtonClicked}" />
</h:form>
</h:body>
bean2.java:
public void dialog1ButtonClicked() {
Map<String, Object> options = new HashMap<>();
options.put("modal", true);
options.put("widgetVar", "dialog2");
options.put("id", "dlg2");
if(somethingTrue()) {
RequestContext.getCurrentInstance().openDialog("dialog2.xhtml", options, null);
}
}
dialog2.xhtml:
<h:body>
The operation was successful.
</h:body>
Dialog2出现在dialog1中!
如何关闭dialog1并在dialog1中不显示dialog2?
我尝试在打开dialog2之前用Primefaces Dialog Framework关闭dialog1:
RequestContext.getCurrentInstance().closeDialog(null);
RequestContext.getCurrentInstance().openDialog("dialog2.xhtml", options, null);
Dialog2没有出现。
我尝试在AJAX回调
<p:ajax event="dialogReturn" listener="#{bean1.dialogClosed}"/>
之后打开dialog2Dialog2不显示。
我尝试了客户端Java脚本调用:
onclick="PF('dialog1').hide()"
Dialog2仍显示嵌套在dialog1中。
最佳答案
使用onHide
可以打开另一个这样的对话框。
<p:dialog class="userRegisterDialog" header="#{bean.dailogHeader}" modal="true" resizable="false" draggable="false" onHide="PF('dialog2').show();>
</p:dialog>
当使用转义键关闭对话框时,它也起作用。
关于jsf - Primefaces对话框框架-打开对话框-关闭它-打开另一个对话框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32897397/