【发布时间】:2011-11-09 04:26:39
【问题描述】:
现在我的想法已经不多了,不知道还能尝试什么。关键是甚至没有一个错误页面在工作,我只是想知道,我做错了什么?,这里是代码:
<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。
2011 年 11 月 30 日更新 --[替代解决方案]-------------------------------- -----
一段时间后,我发现为了使其正常工作,您必须指定 .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>
【问题讨论】:
-
嗨 Bresh Gurung,是的,这是一个非常详细的答案,但也没有用。问题是它抛出的消息“XML 读取错误:找不到元素 - 位置 localhost:8080/XXXXXXX - 行号 1 列 1”,知道是什么原因造成的吗?
-
哪个 Glassfish 版本?您的
<web-app>根声明是什么样的?谁在给出错误信息?你的编辑还是 Glassfish 本身?那个错误真的没有更多了吗?我也希望看到行号和列号。 -
我使用的是 Glassfish 3.1;错误信息由浏览器显示;是的,有一个第 1 行第 1 列。我最终创建了一个 ExceptionHandlerFactory,这样我就可以捕获 ViewExpiredException。正如我在论坛上看到的,这似乎是 Glassfish 3.1 中的一个错误,他们说他们会在下一个版本中修复它。
-
您究竟在何时何地收到此错误?毕竟有些模棱两可。当保存 web.xml 或 IDE 验证 web.xml 或容器想要解析 web.xml 时,您是否会收到此信息?还是您在错误页面本身中收到此错误?
-
我已经回答了这个问题,错误显示在浏览器中。我将会话超时设置为 1,然后测试应用程序并强制它显示 sessionexpired.xhtml,我最终在“浏览器 [Firefox 和 IE]”中收到该错误(XML 读取错误:未找到元素 - 位置localhost:8080/XXXXXXX - 行号 1 列 1) 而不是 sessionexpired.xhtml 页面。稍后我将使用 ExceptionHandlerFactory 发布解决方案。
标签: java jsf glassfish web.xml