Предлагается использовать h:outputText для всего?
Я новичок в JSF (только начал узнавать об этом 4 дня назад), и я немного запутался в использовании h: outputText. Я знаю, что это простой тег, но в большинстве примеров, которые я видел, он используется для вывода очень простого (не нужно убегать) текста, отличного от i18n. Например (взято отсюда)
<h:outputText value="Transport" />
который может быть заменен
Transport
Итак, мне интересно, если я что-то упустил или большинство примеров, которые я видел, слишком сложны до безумия.
3 ответа
Если вы используете JSF 2.x с Facelets 2.x вместо JSP, то оба варианта одинаково действительны. Более того, Facelets неявно оборачивает встроенный контент в компоненте, как представлено <h:outputText>
(другими словами, он будет сбежал!).
Только когда вы хотите отключить экранирование с помощью escape="false"
, или хотел бы назначить id
, style
, onclick
и т. д. программно, или хотел бы использовать конвертер (либо через converter
или неявное через forClass
), тогда вам нужно <h:outputText>
,
Я сам не пользуюсь <h:outputText>
всякий раз, когда это не нужно. Без этого исходный код становится лучше читаемым. Вы можете просто вставить EL в текст шаблона так #{bean.text}
вместо того, чтобы делать <h:outputText value="#{bean.text}">
, До JSF 2.0, в JSP и Facelets 1.x это было невозможно, и поэтому <h:outputText>
является обязательным. Если ваша IDE выдает предупреждения об этом, скорее всего, это JSF 1.x настроен / настроен.
Пример, который вы цитируете, написан на XHTML - это XML. Автономный "Транспорт" может быть запрещен в той позиции, в которую вы хотите его поместить, поэтому вам необходимо "преобразовать" его в действительный xml.
IIrc это то, что в JSF2 называется Facelets и значение по умолчанию, в то время как в JSF1 код представления может быть выполнен с тегами JSP по умолчанию, а Facelets является альтернативой, которую используют многие разработчики).
Тег h:outputText требуется только в том случае, если вы визуализируете текст на основе каких-либо условий визуализации. Например: