javax.faces.application.ViewExpiredException:

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)


精慕HU
浏览 1088回答 4
4回答

红糖糍粑

您是否尝试过在您的web.xml?<context-param> &nbsp;&nbsp;&nbsp;<param-name>com.sun.faces.enableRestoreView11Compatibility</param-name> &nbsp;&nbsp;&nbsp;<param-value>true</param-value></context-param>当我遇到这个问题时,我发现这是非常有效的。

翻阅古今

首先你必须做的事,然后再改变web.xml就是确保你的ManagedBeanimplements Serializable:@ManagedBean@ViewScopedpublic&nbsp;class&nbsp;Login&nbsp;implements&nbsp;Serializable&nbsp;{}尤其是如果你用MyFaces

噜噜哒

避免RichFaces中的多部分形式:<h:form&nbsp;enctype="multipart/form-data"> &nbsp;&nbsp;&nbsp;&nbsp;<a4j:poll&nbsp;id="poll"&nbsp;interval="10000"/></h:form>如果您正在使用RichFaces,我已经发现多部分表单内部的Ajax请求对每个请求返回一个新的View ID。如何调试:在每个Ajax请求中,都返回一个View ID,只要视图ID始终相同,就可以了。如果每个请求都有一个新的视图ID,那么就有一个问题,必须修复。
打开App,查看更多内容
随时随地看视频慕课网APP