我现在已经没有想法,也不知道还有什么可以尝试。关键是甚至没有一个错误 - 页面正常工作,我只是想知道,我做错了什么?,这里是代码:
<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>/sessionexpired.xhtml</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/500.xhtml</location>
</error-page>
在我的web.xml中使用此代码时,我收到此消息:
XML读取错误:找不到元素
此消息的含义是什么?我该怎么解决这个问题?感谢。
顺便说一下,我还尝试使用过滤器来处理 ViewExpiredException ,然后它在我发送POST消息并重定向到sessionexpired.xhtml时第一次工作。但是,如果我向后点击然后再次进行POST调用BAM!我再次得到 ViewExpiredException 。更新30-NOV-2011 - [替代解决方案] -------------------------------- -----
过了一段时间后,我发现为了使它工作,你必须指定 .html或.jsp文件的位置,所以它最终会成为:
<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>/sessionexpired.html</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/500.jsp</location>
</error-page>
答案 0 :(得分:1)
那么,对于那些使用Glassfish 3.1来解决这个问题的人来说,你可以按照这篇文章来处理这个问题,甚至认为我最后改为使用 sendRedirect()代替JSF导航器用于呈现 sessionexpired.xhtml 文件,但这是您的选择,它可以正常工作。你走了:
http://weblogs.java.net/blog/edburns/archive/2009/09/03/dealing-gracefully-viewexpiredexception-jsf2
答案 1 :(得分:0)
可能有些问题尝试这可能会有所帮助..
<error-page>
标记位于<servlet-mapping>
元素之后。
<web-app>
...
<servlet>
...
</servlet>
<servlet-mapping>
.....
</servlet-mapping>
...
<welcome-file-list>
...
</welcome-file-list>
<error-page>
<error-code>404</error-code>
<location>/errorpages/html404.html</location>
</error-page>
<taglib>
...
</taglib>
...
</web-app>
答案 2 :(得分:0)
在我的web.xml中使用此代码时,我收到以下消息:
XML read error: no element found
根据评论,结果是你在浏览器中看到这个而不是预期的错误页面。我最初解释说,由于web.xml
中的语法错误,IDE /编辑器提到了它。你的问题并不完全清楚。
嗯,解决方法很简单:确保<location>
的{{1}}与<error-page>
的网址格式匹配。最简单的方法是将FacesServlet
映射到FacesServlet
的网址格式。
BTW,我也尝试使用过滤器来处理ViewExpiredException,然后它在我发送POST消息并重定向到sessionexpired.xhtml时第一次工作。但是,如果我向后点击然后再次进行POST调用BAM!我再次得到了ViewExpiredException。
这只是由浏览器缓存中请求的页面引起的,而不是直接来自服务器。有关具体解决方案,请参阅此答案:browser back + viewscope beans。
答案 3 :(得分:0)
更改web.xml后,您是否进行了耳朵或战争重新部署? 如果直接转到服务器修改文件,某些应用程序服务器可能会缓存web.xml的旧副本。 希望它可以工作。 :)