2

が表示される前に、Bean メソッドを呼び出す必要があり<p:dialog>ます。現在、私は次のようなものを持っています:

<p:remoteCommand name="updateDialog" action="#{someBean.init()}"
                 update="dialog-table" global="true" />
<p:dialog id="someDialog" modal="true" dynamic="false" onShow="updateDialog()">
    <ui:include src="some-dialog-content.xhtml" />
</p:dialog>

それほど悪くはなく、動作しますが、まだ問題があります。このダイアログはRequestContext、Java コードからの呼び出しを介して表示されます。また、 ajaxStatusajax 呼び出しが送信されたときにステータス ダイアログをスピナーで表示し、この呼び出しが完了すると非表示にするグローバル要素もあります。ただし、someBean.init()完了するまでに時間がかかる場合があるため、進行中のときにもこのステータス ダイアログを表示したいと考えています(これが、設定したinit()理由です- 私が理解している限りでは、トリガーする必要があり、その結果、ステータス ダイアログが表示されます)。ただし、これは機能しません。通話中にステータス ダイアログが表示されません。globaltrueajaxStatussomeBean.init()

私が知る限り、これは、前の要求 (RequestContext更新されsomeDialogて表示される) 完了イベントが呼び出される前に、この削除コマンドが何らかの形で呼び出されたために発生しています。someBean.init()ただし、リクエストが送信された直後に、この完了イベントが呼び出され、someBean.init()完了前にステータス ダイアログが消えます。

私が見つけることができる唯一の回避策は、メインのものからコピーされた 2 番目のステータス ダイアログです。

<p:dialog modal="true" widgetVar="statusDialog2" ...>...</p:dialog>
<p:remoteCommand name="updateDialog" action="#{someBean.init()}"
                 update="dialog-table" global="true"
                 onstart="statusDialog2.show()" oncomplete="statusDialog2.hide()" />
<p:dialog id="someDialog" modal="true" dynamic="false" onShow="updateDialog()">
    <ui:include src="some-dialog-content.xhtml" />
</p:dialog>

これは必要に応じて機能しますが、非常に醜いです。もっときれいな方法でやりたいことをする方法はありますか?

私は JSF 2.1 と Primefaces 3.4.1 を使用しています。

4

1 に答える 1

0

Requestcontext の前にメソッドを呼び出す

于 2014-07-11T10:38:40.997 に答える