J'utilise les OmniFaces FullAjaxExceptionHandler pour afficher les pages d'erreur. Les pages d'erreur sont affichées correctement, mais j'ai des problèmes avec le style de ces pages.h: corps non créé lors de l'utilisation de FullAjaxExceptionHandler
Mon application utilise un modèle qui a des classes CSS définies sur l'élément body. Ces classes sont différentes pour les pages normales et d'erreur:
page normale:
<h:body styleClass="main-body layout-compact">
page d'erreur:
<h:body styleClass="exception-body error-page">
Lorsque le FullAjaxExceptionHandler traite une exception, un attaquant à la page d'erreur est effectuée (basé sur le mécanisme <error-page>
dans web.xml
). Apparemment, cela ne rediffuse pas la balise <h:body>
, car lorsque je vérifie la sortie HTML, je peux voir que la balise <body>
contient toujours les classes CSS de la page normale (au lieu des classes de la page d'erreur).
Il semble que le contenu de l'original <h:body>
est remplacé par le contenu de la page d'erreur <h:body>
au lieu de simplement remplacer le plein <h:body>
. Je ne sais pas si c'est le comportement JSF/FullAjaxExceptionHandler par défaut.
Existe-t-il un moyen de rendre le <h:body>
avec les bonnes classes CSS? Le déplacement des classes CSS de <h:body>
n'est pas une option.
Lorsque vous effectuez une redirection vers une page d'erreur, il ne s'agit donc pas d'un appel ajax, vous ne pouvez donc pas faire de rerender. Au lieu de cela, vous chargez une toute nouvelle page d'erreur. S'il vous plaît vérifier si l'avant est fait correctement. Si c'est le cas, vous aurez la bonne CSS appliquée sur l'étiquette du corps. – OTM
L'avant est fait correctement par le FullAjaxExceptionHandler, je ne fais pas un forward par moi-même. La page d'erreur est affichée (sous la même URL) et le contenu entier
est modifié. La balise cependant, a toujours les classes CSS de la page précédente. Il semble donc que l'étiquette du corps ne soit pas rendue, mais seulement son contenu. Je ne sais pas si c'est un comportement JSF standard. – baraskae