7 java jsf viewexpiredexception
当我有javax.faces.application.ViewExpiredException时,我想将用户发送到登录页面.
web.xml中
...
<context-param>
<param-name>com.sun.faces.enableRestoreView11Compatibility</param-name>
<param-value>true</param-value>
</context-param>
...
<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>/errors/sessionExpired.jsf</location>
</error-page>
Run Code Online (Sandbox Code Playgroud)
sessionExpired.jsf
....
<c:redirect url="/index.jsf" />
Run Code Online (Sandbox Code Playgroud)
但enableRestoreView11Compatibility是JSF 1.1中使用的方法,什么是JSF 1.2的解决方案?
McD*_*ell 12
com.sun.faces.enableRestoreView11Compatibility
是一个JSF 1.2设置,告诉JSF 1.2表现得像JSF 1.1.
com.sun.faces.enableRestoreView11Compatibility
== true
表示"不要抛出ViewExpiredException
;而只是创建一个新视图,如果旧视图已过期."
在IBM的笔记对JSF 1.1的行为说:
这可能会产生不利行为,因为它是一个新视图,通常在视图中的项目(如状态)不再存在.
默认的JSF 1.2行为在规范中定义如下:
如果请求是回发,则调用
ViewHandler.restoreView()
,传递FacesContext
当前请求和视图标识符的实例,并UIViewRoot
为还原的视图返回a .如果返回ViewHandler.restoreView()
值为null,则抛出一个ViewExpiredException
带有相应错误消息的消息.javax.faces.application.ViewExpiredExceptionis a
FacesException`必须抛出以向应用程序发出信号,表明未为视图标识符返回预期视图.应用程序可以选择基于此异常执行某些操作.
要ViewExpiredException
在视图过期时抛出,请删除com.sun.faces.enableRestoreView11Compatibility
参数或将其设置为false
.
该com.sun
命名空间表明参数是Sun /钻嘴鱼科和派生实现特定的设置,所以它可能不会与所有的JSF实现工作.
归档时间: |
|
查看次数: |
11787 次 |
最近记录: |