当PrimeExceptionHandler处理异常时,重新创建@SessionScoped托管bean

时间:2015-12-02 07:46:50

标签: jsf primefaces session-scope exceptionhandler

我有一个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有id UserSession@123456和用户Foo。现在在SelectUserBean中,UserSession有一个新ID,用户为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 bean,它必须是相同的值。

1 个答案:

答案 0 :(得分:0)

链中的某些东西创建了一个新会话, ergo 你有一个新的会话bean。