I\'m developing web-application with JSF. I tested it as I was able to but from time to time runtime exceptions are thrown.
So, how to redirect user to special error
If you use java config in spring, you can follow,
@Configuration
public class ExcpConfig {
@Bean(name = "simpleMappingExceptionResolver")
public SimpleMappingExceptionResolver simpleMappingExceptionResolver() {
SimpleMappingExceptionResolver resolver= new SimpleMappingExceptionResolver();
Properties mappings = new Properties();
resolver.setExceptionMappings(mappings); // None by default
resolver.setExceptionAttribute("ErrorOccurred"); // Default is "exception"
resolver.setDefaultErrorView("500"); // 500.jsp
return r;
}
}
Just declare an <error-page>
in web.xml
wherein you can specify the page which should be displayed on a certain Throwable (or any of its subclasses) or a HTTP status code. E.g.
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/error.jsp</location>
</error-page>
which will display the error page on any subclass of the java.lang.Exception
, but thus not java.lang.Throwable
or java.lang.Error
. This way you can have your own error page for any kind of Throwable
. E.g. java.sql.SQLException
, java.io.IOException
and so on.
Or,
<error-page>
<error-code>500</error-code>
<location>/error.jsp</location>
</error-page>
which will display the error page on a HTTP 500 error, but you can also specify another ones for 404 (Page Not Found), 403 (Forbidden), etcetera.
If you declare <%@page isErrorPage="true" %>
in top of error.jsp
, then you have access to the thrown Exception (and thus also all of its getters) by ${exception}
in EL.
<p>Message: ${exception.message}</p>
Also see the Java EE 5 tutorial on the subject.
In your web.xml:
<error-page>
<error-code>500</error-code>
<location>/errorpages/500.jsp</location>
</error-page>
You may also catch specific exceptions or exceptions which extend Throwable
:
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/errorpages/500.jsp</location>
</error-page>