我在 prerenderview 事件侦听器中打开和关闭错误的 primefaces 对话框时遇到问题。我使用事件监听器从第三方系统加载数据,在某些情况下需要特殊的身份验证。
到目前为止,当需要特殊身份验证时,我在请求范围的 bean 上设置了一个属性,并使用对话框的可见属性来决定对话框是否应该可见。
<p:dialog widgetVar="#{name}" resizable="false" modal="true"
closable="false" id="#{name}Dialog" width="375"
useWindow="true"
visible="#{specialAuthenticationBean.authenticationRequired}">
提示:#{name} 是一个包含参数。
这是推荐的方法吗?
如果是,单击取消或确定按钮时如何关闭对话框?
到目前为止,对于取消按钮,我使用以下代码进行了尝试,但没有成功。
<p:commandButton id="cancel" value="#{messages['cancel']}" onclick="#{name}.hide()" type="button" />
有任何想法吗?
更新:我尝试了不同的方法并找到了原因。对话框没有关闭,因为同一个对话框有三个包含不同参数的包含,但是所有三个对话框的可见条件都是正确的。
现在我问自己是否真的有必要拥有同一个对话框的三个实例,只是因为登录按钮执行不同的操作(bean 方法)。我真正想做的是在一个 bean 方法调用导致打开身份验证对话框后,在身份验证对话框中提交正确的身份验证数据后再次执行相同的 bean 方法。