Управляемый компонент @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 ответ

Что-то в цепочке создало новую сессию, так что вы получили новый сессионный компонент.

Другие вопросы по тегам