Ich laufe Mojarra 2.2.0. Wann erstellt JSF eine Sitzung und was wird in eine Sitzungszuordnung eingefügt?
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
Die Managed Bean Action-Methode ist
public void action() {
HttpSession session = (HttpSession) FacesContext.getCurrentInstance()
.getExternalContext().getSession(false);
System.out.println(session.getId()); // not null for stateful views
}
Für stateless
Ansichten session.getId()
NPE
Für Ansichten werfen die nicht stateless- ist eine GET-Anfrage Entlassung, gibt es JSESSIONID=340041C96D5AA446D761C3602F54A76D
Ich lese es here that-
Für Client-Seite Sparzustand Mechanismus, JSF wird die Sitzung nicht schaffen und den Ansichtszustand in einem verborgenen Eingabefeld mit dem Namen javax.faces.ViewState in Form speichern, wann immer notwendig.
Ferner es hier erwähnt that
JSF wird in der Tat die Sitzung automatisch erstellt, weil der JSF Ansichtszustand hat dort gespeichert werden. Wenn Sie den JSF Sparzustand Methode Client anstelle des Servers gesetzt ist, dann wird es nicht in der Sitzung gespeichert werden und somit braucht keine Sitzung erstellt werden
ich glaube, die über der Linie eine Quelle für Schwierigkeiten ist für mich.
Wenn Sie den JSF Zustand sparende Methode zum Client anstelle von Server festgelegt, dann wird es nicht in der Sitzung gespeichert werden // EINGE VOLL
und
daher keine Sitzung muss erstellt werden. // Das verwirrt, weil für clientseitige Speichermechanismus eine Sitzungs-ID vom Servlet-Container & generiert wird, daher gibt es eine Sitzung, die der -Anforderung zugeordnet ist.
In Bezug auf die Diskussion, die ich mit BalusC in diesem question hatte, habe ich ein HttpSessionListener-
@WebListener
public class MyHttpSessionListener implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent event) {
Thread.dumpStack();
}
public void sessionDestroyed(HttpSessionEvent event) {
}
}
Anbei Screenshots anzeigen (diese 2 Screenshots sind für Version 2.0.3, da muss ein alter Fehler, aufgrund derer gewesen, wurde die Sitzung) erstellt bekommen -
@BalusC: Eclipse IDE automatisch für mich heruntergeladen. Ich befestige auch den Screenshot. –
@BalusC: Sorry für diesen dummen Fehler. Ich dachte, das Entfernen der Bibliothek 2.0.3 aus dem Buildpath würde sie vollständig entfernen. Für Mojarra 2.2.0 wird jetzt derselbe HttpSession Listener nicht aufgerufen. Irgendwelche Vorschläge? –
@BalusC: Ahh, ich verstehe. Jetzt hab ich es verstanden. Ich denke, die Quelle für dieses ganze Problem war die Versionsnummer. –