I would like to be able to navigate in response to an exception.
I have been able to beat my app into going to an error page when I
throw a FacesException but that's all, I haven't been able to
figure out any other navigation cases in response to any other
type of exception.
I'm trying to find out if there is a better way of dealing with
exceptions and navigation?
Here is how I have error page navigation working:
- In the web.xml add this:
<error-page>
<exception-type>javax.faces.FacesException</exception-type>
<location>/redirectToError.jsp</location>
</error-page>
Note: /redirectToError.jsp is an intermediate page that redirects you
back into the FacesServlet since you can't seem to get there directly
from <error-page>.
- In redirectToError.jsp I save the error info in the session then
do a redirect to /faces/Error.jsp
<c:set var="errorMsg" scope="session"
value="${requestScope['javax.servlet.error.message']}"
/>
<c:set var="errorUri" scope="session"
value="${requestScope['javax.servlet.forward.request_uri']}" />
<c:set var="errorException" scope="session"
value="${requestScope['javax.servlet.error.exception']}"
/>
<c:redirect url="/faces/Error.jsp" />
So far this seems to work. (but if there is a better way I would like
to here it.)
Now for the problem:
I have another exception condition where I would like to navigate the
user to a different page (not the error page.) But I always seem
to end up at the Error.jsp page with a FacesException.
Issues:
1) exception can happen during any phase
2) any exception seems to get wrapped in a FacesException
3) in the render phase faces seems to keep trying after the first
exception (generating additional exceptions and burying the first
one I'm really interested in).
Unless the first one is an AbortProcessingException, but then I can't
see how to navigate on it.
I've tried changing my Exception type by extending RuntimeException,
FacesException, and Error and adding additional <error-page> entries
in the web.xml but I always seem to end up at the Error.jsp page
(I think due to issue 2 or 3).
Any help or suggests?
Using: MyFaces and Tomahawk 1.1.4 with jsp (not facelets).