Résultat différent de h: messages après la migration de JSF 1.1 vers JSF 1.2
-
28-10-2019 - |
Question
J'ai un problème avec le rendu de page après la migration de WAS 6.0 + JSF 1.1 vers WAS 7.0 + JSF 1.2.Le problème principal est dans le code suivant:
<h:messages rendered="#{!webData.facesMessagesEmpty}" styleClass="messages"
showSummary="true" showDetail="false" title="Messages" layout="table" id="eMessages"
infoClass="info_with_icon" warnClass="warn_with_icon" errorClass="error_with_icon"
fatalClass="fatal_with_icon" />
Ce code fonctionne correctement sous WAS 6.0 + JSF 1.1 mais n'utilise pas de styles sous WAS 7.0 + JSF 1.2.J'ai fait une petite enquête et j'ai trouvé que ce problème concerne uniquement layout="table".Si j'utilise layout="list", les styles sont corrects.Malheureusement, j'ai besoin d'un tableau ici (parce que layout="list" crée un retrait, et je ne sais pas comment éviter cela).J'ai également constaté que le code HTML généré dans le cas de layout="table" est très différent pour JSF 1.1 et JSF 1.2.
Donc ma question - est-il possible de forcer la génération HTML à l'ancienne (JSF 1.1) pour WAS 7.0 + JSF 1.2?J'ai essayé de le rechercher sur Google, mais je ne trouve pas de réponse ...
La solution
En un mot, JSF 1.1 placera le infoClass
et les consorts sur un <span>
à l'intérieur du <td>
, mais JSF 1.2 le placera sur le <tr>
.
Il semble que vous utilisiez des propriétés CSS très spécifiques qui ne sont pas prises en charge sur l'élément <tr>
.Dans ce cas, vous avez essentiellement 2 options:
-
Modifiez la déclaration CSS pour l'appliquer à la place sur
<td>
..info_with_icon_messages td { /* ... */ }
-
Changez la disposition
<h:messages>
en unlist
et ajoutez les propriétés CSS suivantes sur la classe du<ul>
généré, dans votre cas.messages
, pour supprimer les puces et mettre en retrait:.messages { list-style-type: none; margin: 0; /* ... */ }