1

私は問題があります。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>

問題は次のとおりです。doneChangeと呼ばれるoncompleteがtrueに設定される前に、このボタンをクリックするとデバッグしました。疑わしい点は1つだけです。ボタンがレンダリングされると、oncompleteイベントが決定されます。このダイアログをもう一度開いたとき、そのdoneChangeはまだtrueであり、希望どおりに機能するためです。私はそれを機能させる方法のアイデアを使い果たしました。
どうすればdoneChangeブール値にリアルタイムで反応させることができますか?いくつかのバインディングで動作しますか?Primefacesのホームチュートリアルを試しましたが、成功しませんでした。

前もって感謝します

4

1 に答える 1

3

私は非stackoverflowの友人の助けを借りて解決策を見つけました。間違った方法で使用したようで、callbackparamを追加する必要がありました。

Beanに追加する必要がありました:

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

そして、oncompleteは次のように変更されました。

oncomplete="if(
  args &amp;&amp; args.doneChangeParam)
  {
    actionSuccessDialogVar.show(); changePWDialog.hide();
  }" 
于 2013-02-27T13:08:17.010 に答える