一尘不染

在jsf中配置到错误页面时出错?

jsp

在我的项目中,当我的代码中发生特定错误时,我必须显示一个错误页面。
我在header.xhtml页面中添加了以下脚本。此页面已添加到每个页面。因此,每当发生错误时,我都希望显示错误页面。

<script type="text/javascript">
            A4J.AJAX.onExpired = function(loc, expiredMsg) {
                window.location = "../facelets/error/invalidSessionLogin.jsf";
            };

            A4J.AJAX.onError = function(req, status, message) {
                window.location = "../facelets/error/ajaxError.jsf";
            };
        </script>

但这不起作用。
而且我还在web.xml中配置了500404错误。代码如下。

 <context-param>
        <description>Use this to suppress Facelets error page</description>
        <param-name>org.apache.myfaces.ERROR_HANDLING</param-name>
        <param-value>false</param-value>
    </context-param>
     <error-page>
        <error-code>500</error-code>
        <location>/facelets/error/internalErrorHome.jsf</location>
    </error-page>
    <!-- if required page not available -->
    <error-page>
        <error-code>404</error-code>
        <location>/facelets/error/pageNotFoundErrorHome.jsf</location>
    </error-page>

但这给了我以下错误。

11:41:30,618 ERROR [[localhost]] Exception Processing ErrorPage[errorCode=404, location=/facelets/error/pageNotFoundErrorHome.jsf]
com.sun.faces.context.FacesFileNotFoundException: /facelets/error/pageNotFoundErrorHome.xhtml Not Found in ExternalContext as a Resource

我不知道我要去哪里错..我不明白“在ExternalContext中找不到资源的错误”


阅读 321

收藏
2020-06-10

共1个答案

一尘不染

  1. 您应该测试您提到的路径是否可达,如果路径不起作用,请首先修复该路径。

  2. 为什么不为这些错误代码创建导航案例,然后设置适当的URL而不是使用相对路径。

window.location =“ $ {request.contextpath} / error / 404”;

考虑例如:

   mywebapp
   |
   |---WEB-INF 
   |
   |---error
   |    |
   |    |---404.xhtml

  (and so on)

在web.xml中:

 <error-page>
     <error-code>404</error-code>
     <location>/error/404.xhtml</location>
 </error-page>

同样是500个错误代码

2020-06-10