Подтвердить что ты не робот

Предлагается ли использовать h: outputText для всего?

Я новичок в JSF (только начал узнавать об этом 4 дня назад), и я немного запутался в использовании h: outputText. Я знаю, что это простой тег, но в большинстве примеров, которые я видел, он использовал для вывода очень простой (не нужно бежать), не-i18n текст. Например (взято из здесь)

<h:outputText value="Transport" />

который можно заменить на

Transport 

Итак, мне интересно, не хватает ли я чего-то или если большинство примеров, которые я видел, слишком сложны до безумия.

4b9b3361

Ответ 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}" / > . Если это простой оператор вывода, то нет необходимости использовать тег; вы можете просто использовать: Транспорт