在我的项目中,当我的代码中发生特定错误时,我必须显示一个错误页面。 我在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中找不到资源的错误”
您应该测试您提到的路径是否可达,如果路径不起作用,请首先修复该路径。
为什么不为这些错误代码创建导航案例,然后设置适当的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个错误代码