2009-10-21 4 views
1

Est-il possible de remplacer les pages d'erreur standard de JavaServer Faces tels queRemplacement JavaServer Faces pages d'erreur

500 Internal Server Error

?

Cela inclut des informations telles que la trace de la pile, etc. Mais pour les utilisateurs, lorsque la page est en mode Production, je souhaite afficher une page plus conviviale indiquant que la requête n'a pas abouti.

Répondre

5

La trace de la pile de développement provient probablement de votre implémentation JSF. Le code pour le désactiver sera spécifique à l'implémentation. Pour MyFaces dans servlets, utilisez ce paramètre init dans votre web.xml:

<context-param> 
    <param-name>org.apache.myfaces.ERROR_HANDLING</param-name> 
    <param-value>false</param-value> 
    </context-param> 

Si vous utilisez l'application Sun (Mojarra), il peut y avoir un paramètre clé com.sun.faces....

Vous pouvez également vérifier la valeur de Facelets init parameterfacelets.DEVELOPMENT (assurez-vous que vous ne l'avez pas défini sur true).

Pour spécifier une page d'erreur, vous pouvez utiliser les mécanismes de conteneur habituels. Pour les servlets, il s'agit de specifying a error pages inweb.xml, avec des types d'exception ou des codes d'erreur. Pour attraper tous Throwables ...

<error-page> 
    <exception-type>java.lang.Throwable</exception-type> 
    <location>/errorPage.faces</location> 
    </error-page> 

Vous pourriez trouver un soutien spécifique au fournisseur supplémentaire pour la gestion des erreurs dans les implémentations JSF - vous devriez vérifier leur documentation.

+0

Merci, bonne réponse! Une question de suivi cependant, serait-il possible d'utiliser le message d'erreur sur la page de capture? (ErrorPage.faces) –

+0

Oh et d'ailleurs, où puis-je trouver une liste de tous les com.sun.faces ... keyed paramètres? Je n'utilise pas Myfaces, j'utilise JSF 1.2 avec Facelets. –

+0

Pour obtenir le message d'erreur, essayez l'expression '# {requestScope ['javax.servlet.error.message']}'. Pour obtenir l'exception, utilisez 'javax.servlet.error.exception' - reportez-vous à la spécification Servlet pour obtenir une liste complète des valeurs d'erreur définies sur la carte de requête (si vous voulez le code d'erreur, etc.). Vous pouvez Mojarra contexte params dans la FAQ Glassfish: http://wiki.glassfish.java.net/Wiki.jsp?page=JavaServerFacesRI#section-JavaServerFacesRI-WhatContextParametersAreAvailableAndWhatDoTheyDo – McDowell

Questions connexes