4

ADF Fusion Web アプリケーションの sessionScoped マネージド Bean (バインドされたタスク フローと adfc-config.xml ファイルに登録されたマネージド Bean) で、セッションの属性を次のように設定しました。

FacesContext fctx = FacesContext.getCurrentInstance();
ExternalContext ectx = fctx.getExternalContext();
HttpSession userSession = (HttpSession) ectx.getSession(false);
userSession.setAttribute("compID", defaultCompany);

セッション属性は Bean で正常に機能しており、値はバインドされたタスク フローの jsff ページと、バインドされたタスク フローを領域として含む jsf ページに表示されています。

式を使用して、ページのセッション属性値を取得しています

"#{sessionScope.compID}" 

出力テキスト値プロパティ内で、ビジネス コンポーネントを含むモデル プロジェクトで値を取得できません。クエリで compID セッション属性値を使用したい

Select.........where COMP_ID ='compID';

バインド変数の値プロパティに値を設定し、新しく作成された入札変数をwhere句に渡しますが、機能しません

では、ビジネス コンポーネント ビュー オブジェクトのクエリの where 句でこの動的セッション属性値を使用する方法を教えてください。

4

3 に答える 3

4

以下のブログに記載されていることを試してみることができます

http://andrejusb.blogspot.com/2012/01/how-to-access-session-scope-in​​-adf-bc.html

于 2013-03-07T11:56:57.817 に答える
3

パラメータを受け入れる VO または AM のサービス メソッドが必要です。JSF ページでこのメソッドを呼び出し、セッション スコープをパラメータとして渡します。例: https://blogs.oracle.com/shay/entry/passing_parameters_to_an_adf_p または https://blogs.oracle.com/shay/entry/am_service_method_-_simple_dem

于 2013-03-07T01:07:54.117 に答える
1

私の...両方の答えからのコード行を使用した最終的な解決策....

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");
}

ビュー xml で使用される式

adf.userSession.userData.Company

![used expression in the bind variable value][1]
于 2013-03-08T11:48:34.073 に答える