设置会话变量

时间:2015-06-11 00:27:24

标签: jsf weblogic oracle-adf jdeveloper

我有一个模板,其中包含一个按钮,可让您选择个人资料,按下按钮并显示可用的个人资料,选择一个并按下接受。之后我成功设置了变量会话。

我有一个" First"带有来自View Link的两个jsff页面片段的jsf页面。视图链接由headerView和detailView组成。 headerView有一个绑定变量。我需要的是参数(bindVariableParameter)可以由模板的会话变量设置。

这就是我得到的:

我在主页(单独的应用程序模块)中,我在加载de" First"之前按下模板按钮。 jsf页面然后我去了" First" jsf页面信息加载成功。我在应用程序模块中做的是这样的:

protected void prepareSession(Session session) {
Map sessionScope = ADFContext.getCurrent().getSessionScope();
String company = (String)sessionScope.get("compId");
System.out.println("Default Comapny in BC is: " + company);
super.prepareSession(session);
this.getSession().getUserData().put("Company", company);
System.out.println("After setting value in userData map of BC");
}

在headerView的bind变量表达式中我使用:

adf.userSession.userData.Company

效果很好!!!!但!!!! 当我再次按下按钮并选择其他配置文件时,信息不会更新。在headerView中也不在headerView中。

另外,当我去" First" jsf页面(之前没有按模板按钮),我没有信息,这是对的,因为我没有任何会话变量。之后,我按下模板按钮并选择配置文件,但页面没有刷新。

我尝试了几种方法,但我迷失了。

你能帮帮我吗?

问候。

1 个答案:

答案 0 :(得分:2)

您有两种选择:

  1. 选项一:按如下方式调整您的AM:

    jbo.doconnectionpooling =真

    jbo.txn.disconnect_level = 1

    这将确保在每次操作之前调用prepareSession()方法。这恰好是ADF制作系统中的最佳实践,提高了可扩展性(参见here

  2. 选项二:比使用prepareSession()更好,您可以通过自定义DataControlFactory将Http Session数据传递给ADF BC。 您可以在此处找到示例:http://andrejusb.blogspot.co.uk/2012/05/solution-for-sharing-global-user-data.html