在ADF中设置弹出焦点上的会话变量

时间:2012-03-06 16:43:46

标签: java oracle-adf

我有一个在ADF Popup对话框上有点沉重的应用程序。它们将在索引页面中定义,如下所示:

<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”的会话范围变量。此变量将用于进一步自定义页面,上下文菜单等。

有人可以帮忙吗?

杰森

2 个答案:

答案 0 :(得分:2)

您可以使用JavaScript将点击事件附加到正文或任何弹出窗口中。这可以通过从PopupFetchListener的Listener方法触发JavaScript从后端实现。为:

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

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

使用actionListener添加commandButton并将其隐藏。从弹出窗口的onclick JavaScript方法中,您可以通过以下方式触发该隐藏按钮的click事件:

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

这将触发actionListener。

或者您可以借助af:serverListener来调用支持方法。

我没有测试它,但这应该可行。

答案 1 :(得分:1)

弹出组件有一个PopupFetchListener事件。显示弹出窗口时会触发该事件。 在您的支持bean中捕获该方法并在那里设置会话bean。