Другой результат h: сообщения после миграции с JSF 1.1 на JSF 1.2
У меня проблема с рендерингом страниц после перехода с WAS 6.0 + JSF 1.1 на WAS 7.0 + JSF 1.2. Основная проблема заключается в следующем коде:
<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" />
Этот код работает правильно под WAS 6.0 + JSF 1.1, но не использует стили под WAS 7.0 + JSF 1.2. Я провел небольшое расследование и обнаружил, что эта проблема только для layout = "table". Если я использую layout = "list", то стили в порядке. К сожалению, мне здесь нужна таблица (потому что layout = "list" создает отступ, а я не знаю, как избежать этого). Также я обнаружил, что сгенерированный HTML-код в случае layout = "table" сильно отличается для JSF 1.1 и JSF 1.2.
Поэтому мой вопрос - возможно ли форсировать генерацию HTML в старом стиле (JSF 1.1) для WAS 7.0 + JSF 1.2? Я пытался гуглить, но не могу найти ответ...
1 ответ
В двух словах, JSF 1.1 поместит infoClass
и супруги на <span>
внутри <td>
, но JSF 1.2 положит его на <tr>
,
Похоже, что вы используете очень специфические свойства CSS, которые не поддерживаются <tr>
элемент. В этом случае у вас есть 2 варианта:
Измените объявление CSS, чтобы применить его к
<td>
вместо..info_with_icon_messages td { /* ... */ }
Изменить
<h:messages>
макет, чтобы бытьlist
и добавьте следующие CSS-свойства в класс сгенерированного<ul>
, в твоем случае.messages
, чтобы удалить пули и отступ:.messages { list-style-type: none; margin: 0; /* ... */ }