<h:outputtext>按原样打印HTML而不是实际的HTML </h:outputtext>

时间:2012-05-09 13:32:20

标签: jsf html-escape

我正在使用JSF 1.2

我正在尝试使用<h:outputtext>

打印文字
<h:outputText id="warningDose" styleClass="redText" value="#{templatePrescriptionMaintenanceBackingBean.doseWarningText}"></h:outputText>

现在这个变量包含带有html标签的文本。 <b><i>等......

但是它显示内容,而不是实际的粗体或斜体html输出。

我们有没有办法让这个<h:outputText>能够提供html响应?

3 个答案:

答案 0 :(得分:36)

您应该在h:outputText标记中设置:

escape="false"

但请记住,在JSF视图页面和底层bean之间混合使用“view”构造(即,使用HTML标记创建一个字符串)是一种不好的做法。所有“视图制作”都应该在视图页面中。

答案 1 :(得分:7)

只是将它设置为不逃避。

<h:outputText id="warningDose" escape="false" styleClass="redText" value="#{templatePrescriptionMaintenanceBackingBean.doseWarningText}"></h:outputText>

答案 2 :(得分:1)

我有一个非常类似的问题。我的问题是here

我的xhtml页面看起来像 -

<h:outputText  itemEscaped="false" escape="false"    value="#{singleViewResultDO.associatedCode}" />

associatedCode从SQL查询中获取值,我想使用HTML标记来设置条件样式。

这是我的SQL查询,如下所示:

Select A, REPLACE(Wm_Concat(DISTINCT  CASE WHEN sv.rmvd = 0 THEN  ' '||sv.CMPNION_CD  ELSE '<span style=\"color:red; \">' || ' '||sv.CMPNION_CD|| '</span>' END),' , ','') ,  "
from Table

忽略REPLACE和WM_CONCAT,因为它用于显示逗号分隔值。相关的代码是

CASE WHEN sv.rmvd = 0 THEN  ' '||sv.CMPNION_CD  ELSE '<span style=\"color:red; \">' || ' '||sv.CMPNION_CD|| '</span>' END

我想根据条件rmvd = 0来标记。因为,我在我的转义=“假”,我不需要在查询中转义我的html标签。我的意思是不需要转换&lt;到&lt; &GT;到&gt;和“到”

另请注意,由于我的跨度中有双引号“”,因此我需要将其转义一次,以便在到达时不会进行转义。

我按照需要获得输出 - 红色的8000778