Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java web.xml错误页不工作,为什么?_Java_Jsf_Glassfish_Web.xml - Fatal编程技术网

Java web.xml错误页不工作,为什么?

Java web.xml错误页不工作,为什么?,java,jsf,glassfish,web.xml,Java,Jsf,Glassfish,Web.xml,我现在已经没有主意了,不知道还能尝试什么。问题是,甚至没有一个错误页面在工作,我只是想知道,我做错了什么?下面是代码: <error-page> <exception-type>javax.faces.application.ViewExpiredException</exception-type> <location>/sessionexpired.xhtml</location> </error-page>

我现在已经没有主意了,不知道还能尝试什么。问题是,甚至没有一个错误页面在工作,我只是想知道,我做错了什么?下面是代码:

<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>

javax.faces.application.ViewExpiredException
/sessionexpired.xhtml
500
/500.xhtml
在my web.xml中包含此代码时,我收到以下消息:

XML读取错误:未找到任何元素

这个消息意味着什么?我怎样才能解决这个问题?谢谢

顺便说一句,我还尝试使用过滤器来处理ViewExpiredException,然后在我第一次发送POST消息并重定向到sessionexpired.xhtml时,它就起作用了。但是如果我点击后退,然后再次拨打POST电话,砰!我再次得到ViewExpiredException

更新日期:2011年11月30日--[替代解决方案]-------------------------------------

过了一会儿,我发现为了让它工作,您必须指定.html或.jsp文件的loation,因此它最终将是:

<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>

javax.faces.application.ViewExpiredException
/sessionexpired.html
500
/500.jsp

可能有问题试试这可能会有帮助。
标记位于
元素之后

<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>

...
...
.....
...
...
404
/errorpages/html404.html
...
...
在my web.xml中包含此代码时,我收到以下消息:

根据评论,结果是您在浏览器中看到了这一点,而不是预期的错误页面。我最初解释说,由于
web.xml
中的语法错误,IDE/编辑器会提到它。你的问题不是很清楚

好的,解决方法很简单:确保
FacesServlet的URL模式匹配。最简单的方法是将
FacesServlet
映射到
*.xhtml
的URL模式上


顺便说一句,我还尝试使用过滤器来处理ViewExpiredException,然后在我第一次发送POST消息并重定向到sessionexpired.xhtml时,它就起作用了。但是如果我点击后退,然后再次拨打POST电话,砰!我再次得到ViewExpiredException


这是由于从浏览器缓存而不是直接从服务器请求页面造成的。关于具体的解决方案,请参见此答案:。

对于那些使用Glassfish 3.1解决此问题的人,您可以完全按照本文的内容来处理此问题,即使我最后更改为使用sendRedirect()而不是JSF navigator来呈现sessionexpired.xhtml文件,但这是您的选择,它可以正常工作。给你:


更改web.xml后,您是否进行了ear或war重新部署? 如果您直接转到服务器修改文件,某些应用程序服务器可能会缓存web.xml的旧副本。
希望它能起作用。:)

嗨,SUMIT SINGH,谢谢你的回答,但是是的,在servlet映射之后我已经有了错误页面。当我放置errorplace子句时,它只抛出错误“XML读取错误:找不到元素”。是什么原因造成的?自从Servlet2.4(使用XSD)以来,排序就不再重要了。在此之前,Servlet2.3和DTD以及更老的版本,排序很重要。但是现在谁在使用10年以上的API呢?嗨,Bresh Gurung,是的,这是一个非常详细的答案,但也不起作用。问题在于它抛出的消息“XML读取错误:找不到元素-位置-行号1第1列1”,知道是什么导致了这一情况吗?哪个Glassfish版本?您的
根声明是什么样子的?谁在发出那个错误信息?你的编辑还是Glassfish本身?这个错误真的没有别的吗?我还希望看到行和列的编号;浏览器会显示错误消息;是的,有一行1列1。我最终创建了一个ExceptionHandlerFactory,这样我就可以捕获ViewExpiredException。正如我在一个论坛上读到的,这似乎是Glassfish 3.1中的一个bug,他们说他们将在下一个版本中修复它。你在哪里和什么时候得到这个错误?毕竟有些模棱两可。保存web.xml时,或者IDE验证web.xml时,或者容器想要解析web.xml时,您会得到这个消息吗?或者你在错误页面本身中看到了这个错误吗?我已经回答了这个问题,错误显示在浏览器中。我将会话超时设置为1,然后测试应用程序并强制它显示sessionexpired.xhtml,最后在浏览器[Firefox和IE](XML读取错误:找不到元素-位置localhost:8080/XXXXXXX-行号1第1列)而不是sessionexpired.xhtml页面中出现该错误。稍后我将使用ExceptionHandlerFactory发布此问题的解决方案。嗨,巴卢斯,谢谢你的回答,但它仍然不起作用。FacesServlet的URL模式是*.xhtml(与往常一样),其URL模式与我在问题中的上述内容相同,并且在黄色背景的浏览器中显示了相同的错误。顺便说一句,该错误是特定于浏览器的。您似乎正在使用FF,它确实会出现这样的XML错误。好的,右键单击页面并查看源代码。你看到了什么?是空的吗?还是说它是未经分析的?使用Firebug并检查请求/响应标题。他们怎么说?特别是响应内容类型。结果是HTTP/1.1500内部服务器错误,结果的源代码以开头。我还试图从web.xml中捕获错误代码500,但这是没有用的,没有错误页面在那里工作。也许我应该尝试使用另一台机器,或者我使用的玻璃鱼的安装可能有问题,我真的不知道。它试图使用web.xml捕捉错误,但在解析xml文件时,另一个错误就产生了,这就是我所知道的
 XML read error: no element found