是否建议使用h:outputText作为一切?

时间:2011-04-04 14:24:58

标签: jsf text jsf-2

我是JSF的新手(4天前刚开始学习它),我对h:outputText的使用感到有点困惑。我知道这是一个简单的标签,但在我见过的大多数例子中,它用于输出非常简单(无需转义),非i18n文本。例如(取自here

<h:outputText value="Transport" />

可以替换为

Transport 

所以,我想知道我是否遗漏了某些东西,或者我看到的大部分例子是否过于复杂到疯狂。

3 个答案:

答案 0 :(得分:43)

如果你正在使用带有Facelets 2.x的JSF 2.x而不是JSP,那么两者都同样有效。更重要的是,Facelets隐含地包含组件中的内联内容,如<h:outputText>所示(换句话说,转义!)。

仅在您要使用escape="false"禁用转义,或者想要以编程方式分配idstyleonclick等时,或者想要使用转换器(通过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配置/思考。

答案 1 :(得分:2)

您引用的示例是用XHTML编写的 - 它是XML。在您想要放入的位置可能不允许使用独立的“传输”,因此您需要将其“转换”为有效的xml。

IIrc这就是所谓的facelets和JSF2中的默认值,而在JSF1中,表示代码可以使用JSP标记作为默认值,facelets是许多开发人员使用的替代方案。)

答案 2 :(得分:0)

h:仅当您根据某些渲染条件渲染文本时才需要outputText标记。 例如:&lt; h:outputText value =“Transport”rendered =“#{myBean.displayText}”/&gt;。 如果它是一个简单的输出语句,那么就不需要使用标签了;你可以使用:运输