使用JSF primefaces按钮,根据oncomplete事件的布尔值关闭一个对话框



我有一个问题。我有一个JSF Primefaces环境,我想设置密码。在bean中有一个方法,它可以抛出异常或将doneChange布尔值设置为true。

我想运行下面的代码:
如果doneChange布尔值为true,只需关闭按钮所在的对话框,然后打开另一个对话框。
下面是按钮的代码:

                <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家庭教程,但没有成功。

Thanks in advance

我在一个没有stackoverflow的朋友的帮助下找到了一个解决方案。看来我用错了,需要添加一个callbackparam。

我需要添加Bean:

RequestContext.getCurrentInstance().addCallbackParam(
  "doneChangeParam", 
  doneChange
);

和oncomplete更改为:

oncomplete="if(
  args &amp;&amp; args.doneChangeParam)
  {
    actionSuccessDialogVar.show(); changePWDialog.hide();
  }" 

相关内容

  • 没有找到相关文章