4 Stimmen

Wie verwendet man den Sitzungsattributwert mit der WHERE-Klausel in der Abfrage des Geschäftskomponenten-Ansichtsobjekts?

In der sessionScoped Managed Bean (registrierte Managed Bean im gebundenen Taskflow und auch in der adfc-config.xml-Datei) in der ADF Fusion Webanwendung hatte ich das Attribut in der Session gesetzt.

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

Das Session-Attribut funktioniert problemlos in der Bean und der Wert wird auf der JSFF-Seite des gebundenen Taskflows und auch auf der JSF-Seite angezeigt, die den gebundenen Taskflow als Region enthält.

Ich erhalte den Session-Attributwert auf der Seite mit dem Ausdruck

"#{sessionScope.compID}" 

im Wert-Eigenschaft des Output-Textes, aber ich kann den Wert nicht im Modellprojekt abrufen, das die Business-Komponenten enthält. Ich möchte den Wert des compID-Sessionattributs in der Abfrage verwenden.

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

indem ich den Wert in der Bind-Variablen-Werte-Eigenschaft setze und die neu erstellte Bind-Variablen im WHERE-Clause übergebe, aber es funktioniert nicht.

Also, wie kann ich diesen dynamischen Sessionattributwert in der WHERE-Klausel der Abfrage des Business-Komponenten-View-Objekts verwenden?

4voto

Sam Punkte 1288

Sie könnten versuchen, das in dem unten erwähnten Blog erwähnte zu tun

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

3voto

Shay Shmeltzer Punkte 3658

Sie benötigen eine Service-Methode auf Ihrem VO oder AM, die einen Parameter akzeptiert - Sie rufen diese Methode auf Ihrer JSF-Seite auf und übergeben den Session-Scope als Parameter. Ein Beispiel: https://blogs.oracle.com/shay/entry/passing_parameters_to_an_adf_p oder https://blogs.oracle.com/shay/entry/am_service_method_-_simple_dem

1voto

Vivek Tiwari Punkte 91

Meine...endgültige Lösung unter Verwendung von Codezeilen aus beiden Antworten...

protected void prepareSession(Session session) {
Map sessionScope = ADFContext.getCurrent().getSessionScope();
String company = (String)sessionScope.get("compId");
System.out.println("Standard-Unternehmen in BC ist: " + company);
super.prepareSession(session);
this.getSession().getUserData().put("Firma", company);
System.out.println("Nach dem Setzen des Werts in der Benutzerdaten-Karte von BC");
}

Ausdruck, der in der Ansicht XML verwendet wird

adf.userSession.userData.Company

![verwendeter Ausdruck im Wert der Bindungsvariablen][1]

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X