java.lang.IllegalStateException unter com.sun.faces.context.FacesContextImpl.assertNotReleased

8

Wenn ich die Schaltfläche "Senden" drücke, werden Fehlermeldungen beim Serverprotokoll ausgelöst

login.xhtml

%Vor%

Login.java

%Vor%

Error Stack Trace

%Vor%

Was ist das Problem, wie kann ich es beheben?

    
Sven 05.01.2011, 14:25
quelle

1 Antwort

28

Ihr Fehler ist hier:

%Vor%

Sie sollten nie FacesContext als Instanzvariable einer view / session / application scoped verwalteten Bean zuweisen und sie in verschiedenen Anfragen wiederverwenden, da die aktuelle Instanz von FacesContext an die aktuelle Anfrage, die es inhärent Anfragebereich macht (aber vorzugsweise auch nicht in Anfrage beschränkte Bohnen wegen des schlechten Stils, der zu Vorspeisen verwirrend sein kann).

Die FacesContext -Instanz wird am Ende der Anfrage freigegeben. Bei nachfolgenden Anfragen ist die in einer früheren Anfrage erhaltene Instanz nicht mehr gültig. Wenn es funktioniert hätte, hätten alle Getter-Methoden auf ExternalContext Ihnen die Eigenschaften (Parameter, Cookies, Header usw.) einer vorherigen HTTP-Anfrage und alle Setter-Methoden zurückgegeben, die auf eine vorhergehende HTTP-Antwort festgelegt wurden lange. Das ist alles nicht richtig.

Sie sollten es immer pro Thread lokal (d. h. gerade innerhalb des Methodenblocks) erhalten. In Ihrem speziellen Fall, erhalten Sie es gerade innerhalb der Methode login() :

%Vor%     
BalusC 05.01.2011, 14:30
quelle

Tags und Links