为了账号安全,请及时绑定邮箱和手机立即绑定

javax.faces.application.ViewExpiredException:

javax.faces.application.ViewExpiredException:

精慕HU 2019-05-31 13:43:10
javax.faces.application.ViewExpiredException:无法还原视图我用容器管理的安全性编写了简单的应用程序。问题是,当我登录并打开另一个页面,然后我回到第一页,我点击任何链接等或刷新页面,我得到这个异常。我想这是正常的(或者不是:),因为我注销了,会话被销毁了。我应该如何将用户重定向到例如index.xhtml或login.xhtml,并避免他看到错误页面/消息?换句话说,如何在注销后自动将其他页面重定向到索引/登录页?下面是:javax.faces.application.ViewExpiredException: viewId:/index.xhtml - View /index.xhtml could not be restored.     at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:212)     at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)     at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:110)     at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)     at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)     at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)     at filter.HttpHttpsFilter.doFilter(HttpHttpsFilter.java:66)     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:277)     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)     at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)     at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)     at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
查看完整描述

4 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

您是否尝试过在您的web.xml?

<context-param>
   <param-name>com.sun.faces.enableRestoreView11Compatibility</param-name>
   <param-value>true</param-value></context-param>

当我遇到这个问题时,我发现这是非常有效的。


查看完整回答
反对 回复 2019-05-31
?
翻阅古今

TA贡献1780条经验 获得超5个赞

首先你必须做的事,然后再改变web.xml就是确保你的ManagedBeanimplements Serializable:

@ManagedBean@ViewScopedpublic class Login implements Serializable {}

尤其是如果你用MyFaces


查看完整回答
反对 回复 2019-05-31
?
噜噜哒

TA贡献1784条经验 获得超7个赞

避免RichFaces中的多部分形式:

<h:form enctype="multipart/form-data">
    <a4j:poll id="poll" interval="10000"/></h:form>

如果您正在使用RichFaces,我已经发现多部分表单内部的Ajax请求对每个请求返回一个新的View ID。

如何调试:

在每个Ajax请求中,都返回一个View ID,只要视图ID始终相同,就可以了。如果每个请求都有一个新的视图ID,那么就有一个问题,必须修复。


查看完整回答
反对 回复 2019-05-31
  • 4 回答
  • 0 关注
  • 1085 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信