2011-09-07 3 views
0

Je veux envoyer l'utilisateur à une page d'erreur chaque fois qu'une erreur se produit, que ce soit un 404, 500..etc. J'utilisais le code d'erreur dans le fichier web.xml mais je veux piéger toutes les instances de java.lang.Throwable car je crois que toute erreur est une sous-classe de java.lang.Throwable. Aussi, quand j'ai utilisé le schéma de code d'erreur, les stacktraces n'apparaissaient plus dans catlina.out de Tomcat ... des idées? Je ne savais pas si l'API ExceptionHandler de JSF2 traitait les 404?Gérer globalement les exceptions dans JSF2

<error-page> 
    <error-code>404</error-code> 
    <location>/pageNotFound.html</location> 
    </error-page> 
    <error-page> 
    <error-code>500</error-code> 
    <location>/systemError.html</location> 
    </error-page> 
+0

Quel est exactement le problème avec lequel vous avez des problèmes? Ce n'est pas tout à fait clair à partir de la question. Le problème concret est-il que la pilepace n'est plus imprimée chaque fois que vous spécifiez une page d'erreur HTTP 500 personnalisée? Cela ne devrait pas arriver. Il y aurait plus dans le problème. – BalusC

+0

le problème est que la trace de la pile n'imprime plus pendant 500s quand je piège juste les codes d'erreur dans le web.xml. Je pensais qu'il pourrait y avoir un meilleur moyen que ce que je fais. J'ai posté mon code web.xml ci-dessus maintenant ... des suggestions? – c12

+0

Ainsi, lorsque vous supprimez seule cette entrée 500 de 'web.xml', alors la piletrace est imprimée? Quelle version de Tomcat utilisez-vous? – BalusC

Répondre

1

quand je le schéma de code d'erreur, les stacktraces n'apparaissaient dans le catlina.out de Tomcat plus

Ce n'est pas le comportement standard. Votre problème est causé par autre chose. Peut-être que c'est la mauvaise méthode de test ou peut-être que vous supprimez des exceptions et redirigez manuellement dans certains Filter ou similaire. Il est impossible de répondre en fonction des informations fournies.


Je ne sais pas si ExceptionHandler API gérée 404s de JSF2?

Dépend. Si l'URL de la requête correspond à FacesServlet, alors elle enverra par défaut un FileNotFoundException qui finira par se terminer par HTTP 500. Si l'URL de la requête ne correspond pas au FacesServlet ou à toute autre servlet, le conteneur servlet la traitera comme HTTP 404.

Questions connexes