ADF使用页面片段刷新页面jsf设置会话变量后的jsf

ADF使用页面片段刷新页面jsf设置会话变量后的jsf,jsf,weblogic,oracle-adf,jdeveloper,Jsf,Weblogic,Oracle Adf,Jdeveloper,我有一个模板,其中包括一个按钮,让你选择一个配置文件,你按下按钮,出现可用的配置文件,选择一个,并按下接受。之后,我成功地设置了一个变量会话 我有一个“第一”jsf页面,其中包含来自视图链接的两个jsf页面片段。视图链接由headerView和detailView组成。headerView有一个绑定变量。我需要的是参数(bindVariableParameter)可以由模板的会话变量设置 这就是我得到的: 我在一个主页(单独的应用程序模块)中,我在加载de“First”jsf页面之前按下模板按钮

我有一个模板,其中包括一个按钮,让你选择一个配置文件,你按下按钮,出现可用的配置文件,选择一个,并按下接受。之后,我成功地设置了一个变量会话

我有一个“第一”jsf页面,其中包含来自视图链接的两个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的绑定变量表达式中,我使用:

adf.userSession.userData.Company
它工作得很好!!!!但是 当我再次按下按钮并选择其他配置文件时,信息不会更新。无论是在headerView中还是在detailView中

另外,当我转到“第一个”jsf页面时(之前没有按下模板按钮),我没有得到任何信息,这是正确的,因为我没有任何会话变量。之后,我按下模板按钮并选择配置文件,但页面不会刷新

我试过几种方法来解决这个问题,但我迷路了

你能帮我吗


尊敬。

您有两种选择:

  • 选项一:按如下方式调整AM:

    jbo.doconnectionpooling=true

    jbo.txn.disconnect_level=1

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

  • 选项二:与使用prepareSession()相比,您可以通过自定义会话将Http会话数据传递给ADF BC。 您可以在此处找到一个示例:


  • 选项1很好。但我的页面每次都会重新加载。别让我工作。你知道为什么吗?我应该尝试选项二而不是吗?我看不到重新加载的页面和在AM中设置这些参数之间有任何关系。但总的来说,使用prepareSession()读取HTTP请求并不是一个好主意,因为您无法从BC Tester测试代码。