5

In my project I have to display a error page when specific errors occurs in my code.
I have added the following script in my header.xhtml page.This page is added to each and every page.So whenever error occurs I want to display error page.

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

but this is not working..
And I also configure for 500,404 error in web.xml.The code is as follows.

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

But this gives me following error.

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

I don't know where I am going to wrong.. I don't get it the error Not Found in ExternalContext as a Resource

vijayk
  • 2,633
  • 14
  • 38
  • 59

2 Answers2

8
  1. You should test whether the path you have mentioned is reachable or not, and firstly fix the paths if they are not working.

  2. Why don't you create a navigation case for these error codes and then instead of using relative paths, set the appropriate urls.

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

Consider for example:

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

  (and so on)

In web.xml:

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

and similarily for 500 error-code.

Himanshu Bhardwaj
  • 4,038
  • 3
  • 17
  • 36
  • can you please give a simple example..how to set the paths in jsf page. – vijayk Jun 13 '13 at 06:57
  • still the same error..Not Found in ExternalContext as a Resource..what is this means.. – vijayk Jun 13 '13 at 08:13
  • I don;t have the necessary environment here to test. Where's your servlet mapping for FacesServlet. Also refer to this: http://stackoverflow.com/questions/13148624/error-login-xhtml-not-found-in-externalcontext-as-a-resource – Himanshu Bhardwaj Jun 13 '13 at 08:36
  • Also see this one : http://stackoverflow.com/questions/4915020/tomcat-error-not-found-in-externalcontext-as-a-resource – Himanshu Bhardwaj Jun 13 '13 at 08:45
-2

AFAIK you can not register a JSF page as an error-page in web.xml. Instead you have to use a JSP.

<error-page>
  <error-code>404</error-code>
  <location>/error404.jsp</location>
</error-page>
tmandry
  • 375
  • 3
  • 13