Другой результат 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 варианта:

  1. Измените объявление CSS, чтобы применить его к <td> вместо.

    .info_with_icon_messages td {
        /* ... */
    }
    
  2. Изменить <h:messages> макет, чтобы быть list и добавьте следующие CSS-свойства в класс сгенерированного <ul>, в твоем случае .messages, чтобы удалить пули и отступ:

    .messages {
        list-style-type: none;
        margin: 0; 
        /* ... */
    }
    
Другие вопросы по тегам