2012-03-06 5 views
0

ADFポップアップダイアログでは、ある程度重いアプリケーションがあります。彼らはこのようにインデックスページで定義されます:ポップアップが開き、および/またはフォーカスを受け取るたびポップアップフォーカスのセッション変数をADFで設定する

<af:popup id="popup1" contentDelivery="lazyUncached" binding="managedBean1"> 
    <jsp:include page="page1.jsp" /> 
</af:popup> 
<af:popup id="popup2" contentDelivery="lazyUncached" binding="managedBean1"> 
    <jsp:include page="page2.jsp" /> 
</af:popup> 

etc, etc. 

は、私は何をしたいのは、私が「whereami」という名前のセッションスコープの変数を設定したいです。この変数は、ページ、コンテキストメニューなどをさらにカスタマイズするために使用されます。

誰でも手助けできますか?

ジェイソン

答えて

1

ポップアップコンポーネントはPopupFetchListenerイベントがあります。ポップアップが表示されたときにイベントが発生します。 バッキングBeanでそのメソッドを取得し、そこにセッションBeanを設定します。

+0

私はそれを見つけましたが、ポップアップがフォーカスを取得するたびに、またはポップアップが初めて表示されたときのみ起動します。このアプリでは、ポップアップが重複している可能性があります。これはwhereami変数を壊す可能性があります。breadcrumbsコンポーネントはオプションではありません。 – Jason

+0

実際、答えは「いいえ」と思われ、PopupFetchListenerはポップアップフォーカスではなく初期ロード時にのみ起動します。 – Jason

2

JavaScriptを使用して、ポップアップのclickイベントを本文に貼り付けることもdivにすることもできます。これはバックエンドからPopupFetchListenerのListenerメソッドからJavaScriptを起動することで実現できます。 As:

ExtendedRenderKitService service = Service.getRenderKitService(FacesContext.getCurrentInstance(), ExtendedRenderKitService.class); 
service.addScript(FacesContext.getCurrentInstance(), "yourmethod();"); 

次のいずれかの方法に従うことができます。

actionListenerのcommandButtonを追加し、非表示にします。これは、ActionListenerを起動します

var button = AdfPage.PAGE.findComponentByAbsoluteId("hiddenButton"); 
ActionEvent.queue(button,true); 

:ポップアップのonclickのJavaScriptメソッドからは、することによって、その隠しボタンのクリックイベントをトリガすることができます。

また、コールバックメソッドをaf:serverListenerにすることもできます。

私はテストしませんでしたが、これはうまくいくはずです。

関連する問題