Diferente resultado de H: Mensajes después de la migración de JSF 1.1 a JSF 1.2
-
28-10-2019 - |
Pregunta
Tengo un problema con la representación de la página después de la migración desde WAS 6.0 + JSF 1.1 a 7.0 + JSF 1.2. El principal problema está en el siguiente código:
<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" />
Este código funciona correctamente en Was 6.0 + JSF 1.1 pero no usa estilos debajo de 7.0 + JSF 1.2. He realizado un poco de investigación y descubrí que este problema es solo para diseño = "tabla". Si uso Layout = "List", los estilos están bien. Desafortunadamente, necesito Tabla aquí (porque Layout = "List" crea sangría, y no lo hago para avivar esto). También he encontrado que el código HTML generado en caso de diseño = "Tabla" es muy diferente para JSF 1.1 y JSF 1.2.
Entonces, mi pregunta: ¿es posible forzar la generación HTML de estilo antiguo (JSF 1.1) por 7.0 + JSF 1.2? Traté de buscarlo en Google pero no puedo encontrar respuesta ...
Solución
En pocas palabras, JSF 1.1 pondrá el infoClass
y consorte en un <span>
dentro de <td>
, pero JSF 1.2 lo pondrá en el <tr>
.
Parece que está utilizando propiedades CSS muy específicas que no son compatibles con el <tr>
elemento. En ese caso, básicamente tienes 2 opciones:
Cambiar la declaración de CSS para aplicarla
<td>
en cambio..info_with_icon_messages td { /* ... */ }
Cambiar el
<h:messages>
Diseño para ser unlist
y agregue las siguientes propiedades de CSS en la clase de la generada<ul>
, en tu caso.messages
, para quitar las balas y la sangría:.messages { list-style-type: none; margin: 0; /* ... */ }