在我的项目中,当我的代码中出现特定错误时,我必须显示一个错误页面。
我在我的 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
我不知道我哪里错了.. 我不明白错误 Not Found in ExternalContext as a Resource
最佳答案
您应该测试您提到的路径是否可达,如果路径不可用,请先修复路径。
为什么不为这些错误代码创建一个导航案例,然后设置适当的 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 错误代码也是类似的。
关于java - 配置到jsf中的错误页面时出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17080446/