Je développe une application web avec JSF. Je l'ai testé comme je le pouvais, mais de temps en temps, des exceptions d'exécution sont levées.
Alors, comment rediriger l'utilisateur vers une page d'erreur spéciale chaque fois qu'une exception est levée (au lieu d'afficher 500 erreur avec les journaux Tomcat complets)?
Déclarez simplement un <error-page>
dans web.xml
dans lequel vous pouvez spécifier la page qui doit être affichée sur un certain Throwable
(ou l'une de ses sous-classes) ou un code d'état HTTP . Par exemple.
<error-page>
<exception-type>Java.lang.Exception</exception-type>
<location>/error.jsp</location>
</error-page>
qui affichera la page d'erreur sur n'importe quelle sous-classe du Java.lang.Exception
, mais donc pas Java.lang.Throwable
ou Java.lang.Error
. De cette façon, vous pouvez avoir votre propre page d'erreur pour tout type de Throwable
. Par exemple. Java.sql.SQLException
, Java.io.IOException
etc.
Ou,
<error-page>
<error-code>500</error-code>
<location>/error.jsp</location>
</error-page>
qui affichera la page d'erreur sur une erreur HTTP 500, mais vous pouvez également en spécifier une autre pour 404 (Page non trouvée), 403 (Interdit), etc.
Si vous déclarez <%@page isErrorPage="true" %>
en haut de error.jsp
, alors vous avez accès au jeté Exception
(et donc aussi à tous ses getters) par ${exception}
dans EL.
<p>Message: ${exception.message}</p>
Voir aussi le tutoriel Java EE 5 sur le sujet .
Dans votre web.xml:
<error-page>
<error-code>500</error-code>
<location>/errorpages/500.jsp</location>
</error-page>
Vous pouvez également intercepter des exceptions spécifiques ou des exceptions qui étendent Throwable
:
<error-page>
<exception-type>Java.lang.Throwable</exception-type>
<location>/errorpages/500.jsp</location>
</error-page>
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;
}
}