我有个问题。我有一个 JSF Primefaces 环境,我想设置密码。在 bean 中有一个方法,它可以抛出异常或将 doneChange 布尔值设置为 true。
我想要以下运行:
如果 doneChange 布尔值为真,只需关闭按钮所在的对话框,然后打开另一个。
这是按钮的代码:
<p:commandButton id="changeButtonId"
type="submit"
value="#{msg.changePassword}"
ajax="true"
action="#{changePasswordController.changePassword}"
update=":changePasswordFormId :actionSuccessDialogId"
oncomplete="if(#{changePasswordController.doneChange}){actionSuccessDialogVar.show()}; if(#{changePasswordController.doneChange}){changePWDialog.hide();}">
<f:setPropertyActionListener target="#{functionSuccessBean.actionName}" value="#{msg.changePassword}"/>
<f:setPropertyActionListener target="#{functionSuccessBean.description}" value="#{msg['actionSuccess']}"/>
</p:commandButton>
问题是:我在单击此按钮时进行了调试,在 oncomplete 调用 doneChange 设置为 true 之前。我只有一个怀疑:当按钮被渲染时,oncomplete 事件就确定了。因为当我再次打开此对话框时,doneChange 仍然是正确的并且可以按我的意愿工作。我想不出如何让它发挥作用。
如何让它实时响应 doneChange 布尔值?它是否适用于某些绑定?我尝试了 primefaces 家庭教程,但没有成功。
提前致谢