Jsf 2 会话过期时RenderResponsePhase上的JSF2.0 NPE(viewRoot为空)
我的应用程序使用JSF2.0.6和RichFaces4.1.0。 我实现了一个ExceptionHandler,它通常在弹出窗口中显示所有异常,并且工作正常 但当我使用此上下文参数禁用部分状态保存时,出现了一些问题:Jsf 2 会话过期时RenderResponsePhase上的JSF2.0 NPE(viewRoot为空),jsf-2,nullpointerexception,viewexpiredexception,Jsf 2,Nullpointerexception,Viewexpiredexception,我的应用程序使用JSF2.0.6和RichFaces4.1.0。 我实现了一个ExceptionHandler,它通常在弹出窗口中显示所有异常,并且工作正常 但当我使用此上下文参数禁用部分状态保存时,出现了一些问题: <context-param> <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name> <param-value>false</param-value>
<context-param>
<param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
<param-value>false</param-value>
</context-param>
事实上,viewRoot是空的
如果启用了部分状态保存或会话未过期,则不会发生这种情况
出于某些原因,我需要激活完整状态保存选项,但我不知道在会话过期时如何正确处理错误。我想这是一个JSF错误,我想在我的web应用程序上修复它
其他信息:
服务器:Tomcat 6.0.18Mojarra 2.0.6已经超过1.5年了。你试过当前版本吗?这个bug可能已经被修复了(虽然我不认识这个)。是的,我试过了,它在最新版本(2.1.14)下运行良好,但是在我的项目中更改库有点长和复杂…嗯。。这不是一个我们可以解决的问题,对吗?好吧,这只是为了防止在不更新库的情况下修复它。感谢您的帮助。您可以将包含修复程序的Mojarra特定类的副本潜入webapp源文件夹。它将在类加载中优先于JAR中的类。但是我真的更喜欢用一个更新的版本来替换这个罐子。
<context-param>
<param-name>javax.faces.FULL_STATE_SAVING_VIEW_IDS</param-name>
<param-value>/index.xhtml</param-value>
</context-param>
ViewDeclarationLanguage vdl =
vh.getViewDeclarationLanguage(facesContext,
facesContext.getViewRoot().getViewId());