2010-07-26 120 views
38

我需要使用outputText呈现换行符,以便我可以利用归因的rendered。我试图如何使用outputText显示换行符?

<h:outputText value="<br/>" escape="false" /> 

,但它产生的异常

The value of attribute "value" associated with an element type "null" must not contain the '<' character. 

回答

87

由于Facelets在语法上无效,因此这确实无效。您需要手动转义XML特殊字符,如<,>等。

<h:outputText value="&lt;br/&gt;" escape="false" /> 

但是,您可以只发出模板文本<br/>,而不需要一个<h:outputText>

<br/> 

要有条件地渲染它,请将其包装在例如<ui:fragment>中。

<ui:fragment rendered="#{bean.rendered}"><br /></ui:fragment> 

A <h:panelGroup>也是有效的,因为它不会向HTML发送任何内容。

<h:panelGroup rendered="#{bean.rendered}"><br /></h:panelGroup> 
+0

你会怎么做时,在动态添加'HtmlOutputText'写豆Getter方法托管bean?我试过'HtmlOutputText linebreak = new HtmlOutputText(); lineBreak.setValue(“< br/>”和“
”);'(显然不是同时那样),但都没有工作,他们只输出输入的文本,而不是休息 – Austin 2012-08-15 20:11:59

+1

@Austin:显然你忘记了调用' setEscape(假)'。 – BalusC 2012-08-15 20:15:22

+0

确定你不需要任何新书吗? =) – Austin 2012-08-15 20:35:12

0

你可以尝试把"<br />"资源包内,然后从那个资源包的价值。

3

JSF页面

<h:outputText value="#{car.crg}" escape="false" style="white-space: pre-wrap;word-wrap: break-word; " /> 

逃生false和如下

public String getCrg() { 
     return crg.replace("<br/>", "&lt;br /&gt;"); 
     //return crg; 
    } 
相关问题