Другой результат h: сообщения после миграции с JSF 1.1 на JSF 1.2 - PullRequest
1 голос
/ 06 декабря 2011

У меня проблема с рендерингом страниц после перехода с 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 Ответ

1 голос
/ 06 декабря 2011

В двух словах, 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; 
        /* ... */
    }
    
...