我是JSF的新手(4天前刚开始学习它),我对h:outputText的使用感到有点困惑。我知道这是一个简单的标签,但在我见过的大多数例子中,它用于输出非常简单(无需转义),非i18n文本。例如(取自here)
<h:outputText value="Transport" />
可以替换为
Transport
所以,我想知道我是否遗漏了某些东西,或者我看到的大部分例子是否过于复杂到疯狂。
答案 0 :(得分:43)
如果你正在使用带有Facelets 2.x的JSF 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配置/思考。
答案 1 :(得分:2)
您引用的示例是用XHTML编写的 - 它是XML。在您想要放入的位置可能不允许使用独立的“传输”,因此您需要将其“转换”为有效的xml。
答案 2 :(得分:0)
h:仅当您根据某些渲染条件渲染文本时才需要outputText标记。 例如:&lt; h:outputText value =“Transport”rendered =“#{myBean.displayText}”/&gt;。 如果它是一个简单的输出语句,那么就不需要使用标签了;你可以使用:运输