Предлагается ли использовать h: outputText для всего?
Я новичок в JSF (только начал узнавать об этом 4 дня назад), и я немного запутался в использовании h: outputText. Я знаю, что это простой тег, но в большинстве примеров, которые я видел, он использовал для вывода очень простой (не нужно бежать), не-i18n текст. Например (взято из здесь)
<h:outputText value="Transport" />
который можно заменить на
Transport
Итак, мне интересно, не хватает ли я чего-то или если большинство примеров, которые я видел, слишком сложны до безумия.
Ответы
Ответ 1
Если вы используете 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 настроен/настроен.
Ответ 2
Пример, который вы цитируете, написан на XHTML - это XML. Автономный "Транспорт" не может быть разрешен в позиции, в которую вы хотите поместить его, так что вам нужно "преобразовать" его в действительный xml.
IIrc это то, что называется facelets и значением по умолчанию в JSF2, тогда как в JSF1 код представления может быть выполнен с использованием тегов JSP по умолчанию, а facelets - альтернатива, которую использовали многие разработчики).
Ответ 3
h: Тег outputText требуется, только если вы визуализируете текст на основе некоторого условия рендеринга.
например: < h: outputText value = "Transport" rendered = "# {myBean.displayText}" / > .
Если это простой оператор вывода, то нет необходимости использовать тег; вы можете просто использовать: Транспорт