2012-03-06 106 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」會話範圍的變量。此變量將用於進一步定製頁面,上下文菜單等。

任何人都可以協助嗎?

Jason

回答

1

彈出窗口組件有一個PopupFetchListener事件。顯示彈出窗口時會觸發該事件。 在您的支持bean中捕獲該方法並在那裏設置會話bean。

+0

我發現了,但是當彈出窗口獲得焦點時,還是隻在第一次彈出窗口時纔會觸發?它可能在這個應用程序有重疊彈出,這可能會搞砸whereami變量麪包屑組件不是一個選項。 – Jason 2012-03-07 12:11:05

+0

其實,我發現答案似乎是「否」,PopupFetchListener只在初始加載時觸發,而不是彈出焦點。 – Jason 2012-03-07 13:07:36

2

您可以將點擊事件附加到使用JavaScript的彈出窗口的正文或div。這可以通過從PopupFetchListener的Listener方法中引發JavaScript來從後端實現。如:

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

然後,您可以按照以下任一方式。

添加一個命令與actionListener,讓它隱藏。從彈出的onclick JavaScript方法可以觸發由隱藏按鈕的單擊事件:

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

這將觸發的ActionListener。

或者你可以採取的af:serverListener幫助調用後盾方法。

我沒有測試它,但這應該工作。

相關問題