我有一个带有bean属性的Primefaces(版本5)对话框绑定:
<p:dialog
id="dialog"
widgetVar="myDialog"
modal="true"
resizable="false"
appendTo="@(body)"
binding="#{bean.dialog}"
>
...
<p:commandButton
id="cmdButton"
action="#{bean.test()}"
value="Save"
disabled="false" />
我的背豆方法是:
@ViewScoped
private Dialog dialog;
public Dialog getDialog() {
return dialog;
}
public void setDialog(Dialog dialog) {
this.dialog = dialog;
}
public void test( )
{
RequestContext rc = RequestContext.getCurrentInstance();
rc.execute("PF('myDialog').hide();");
rc.closeDialog(dialog);
}
当它运行时,我得到一个异常在closeDialog调用回bean:
警告:java.lang.NullPointerException: Argument Error: Parameter key is null
尽管如此,我的对话框正确关闭。
为什么会出现这个异常?
PrimeFaces有两种类型的对话实现:
- p。对话框(如您的):通过使用客户端api的show()和hide()方法来管理对话框的可见性。 对话框框架:在运行时动态生成的外部页面中显示的对话框。
回答你的问题:1. 由"rc.closeDialog(dialog);"引发的异常,该异常应在dialog框架中使用。例如
public void selectResultFromDialog(Object result) {
RequestContext.getCurrentInstance().closeDialog(result);
}
这将关闭对话框并将所选对象返回到父页面。
- 为什么我的对话框正确关闭?rc.execute("PF('myDialog').hide();")关闭实际隐藏它的对话框。
对于您的解决方案,我建议您使用对话框框架。