1

prerenderview イベント リスナーでエラーが発生したときに、primefaces ダイアログを開いたり閉じたりすると問題が発生します。イベント リスナーを使用して、状況によっては特別な認証が必要なサードパーティ システムからデータを読み込みます。

これまでのところ、特別な認証が必要な場合は、リクエスト スコープの Bean にプロパティを設定し、ダイアログの visible プロパティを使用して、ダイアログを表示するかどうかを決定します。

<p:dialog widgetVar="#{name}" resizable="false" modal="true"
            closable="false" id="#{name}Dialog" width="375"
            useWindow="true" 
            visible="#{specialAuthenticationBean.authenticationRequired}">

ヒント: #{name} はインクルード パラメータです。

これは推奨される方法ですか?

はいの場合、キャンセルまたはOKボタンがクリックされたときにダイアログを閉じるにはどうすればよいですか?

これまでのところ、キャンセル ボタンについては、次のコードでこれを試しましたが、成功しませんでした。

<p:commandButton id="cancel" value="#{messages['cancel']}" onclick="#{name}.hide()" type="button" />

何か案は?

更新:さまざまなことを試して、原因を見つけました。同じダイアログに異なるパラメーターを持つ 3 つのインクルードがあったため、ダイアログは閉じませんでしたが、3 つのダイアログすべてで visible-condition が true でした。

そして今、ログイン ボタンが異なるアクション (Bean メソッド) を実行するという理由だけで、同じダイアログの 3 つのインスタンスが本当に必要かどうかを自問します。私が本当にやりたいことは、1 つの Bean メソッドの呼び出しが認証ダイアログを開くようになった後、認証ダイアログで正しい認証データを送信した後、同じ Bean メソッドを再度実行することです。

4

0 に答える 0