2010-11-19 22 views
3

je l'ai déjà déclaré ce qui suit dans mon pages.xml:Dans une application Jboss Seam, comment puis-je m'assurer que chaque exception entraîne une page d'erreur personnalisée?

<exception> 
    <http-error error-code="500" /> 
</exception> 

et dans mon web.xml:

<error-page> 
    <error-code>500</error-code> 
    <location>/error500.html</location> 
</error-page> 

encore, parfois, quand une exception est que je jette obtenir la page de débogage, même en production. J'ai lu here que lorsqu'une exception est levée pendant la phase RENDER_RESPONSE, aucune redirection ne peut avoir lieu puisque la réponse est déjà envoyée. J'ai deux questions:

  • Comment puis-je déterminer si l'exception a été levée pendant cette phase?
  • Est-il possible d'afficher une page d'erreur personnalisée, peu importe où l'exception est levée? Si oui, comment puis-je accomplir cela?

Répondre

1

Si vous obtenez la page de débogage en production, cela signifie que vous n'avez pas correctement défini le débogage sur false.

Si vous utilisez des facelets, vous devez également vous rappeler de définir les facettes de débogage à false.

<context-param> 
    <param-name>facelets.DEVELOPMENT</param-name> 
    <param-value>false</param-value> 
</context-param> 

En plus

<core:init debug="false" jndi-pattern="somepattern"/> 

Maintenant Init.instance().isDebug() devrait aboutir à false

Pour toute exception à une page par défaut d'erreur, écrire ceci dans pages.xml

<exception> 
    <redirect view-id="/error.xhtml"> 
     <message severity="error">Error</message> 
    </redirect> 
</exception> 
1

Je pense que vous devez définir debug false dans components.xml

<core:init debug="false" jndi-pattern="n2/#{ejbName}/local"/>