Управляемый компонент @SessionScoped воссоздается при обработке исключительной ситуации PrimeExceptionHandler
У меня есть Session Scoped Bean:
@SessionScoped
public class UserSession {
User user;
}
Во время моего LoginView я выбрасываю SecurityException:
throw new java.lang.SecurityException("You need to login!");
Который будет перенаправлен web.xml
в SelectUserBean
Теперь вот странная вещь, которую я действительно не понимаю: прежде чем бросить SecurityException
, UserSession
имеет идентификатор UserSession@123456
и пользователь Foo
, Сейчас в SelectUserBean
UserSession
имеет новый идентификатор и пользователь null
,
в моем faces-config
У меня была обработка исключений Primefaces:
<el-resolver>
org.primefaces.application.exceptionhandler.PrimeExceptionHandlerELResolver
</el-resolver>
а также
<factory>
<exception-handler-factory>
org.primefaces.application.exceptionhandler.PrimeExceptionHandlerFactory
</exception-handler-factory>
</factory>
после удаления работает как положено. есть идеи по этому поводу?
Почему это происходит? Я думал, так как это бин SessionScoped, он должен иметь одинаковое значение.
1 ответ
Что-то в цепочке создало новую сессию, так что вы получили новый сессионный компонент.