2012-02-14 88 views
4

我试图打破显示在<h:outputText的值属性中的文本,如果将文本直接放置在<h:outputText,但如果我把属性文件中相同的文字,它停止工作h:从资源包(属性文件)带有换行符的outputText

这里是文本的例子

A&lt;br /&gt;B&lt;br /&gt;C 

这工作得很好:

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

不起作用:从属性文件

<h:outputText value="#{text.someText}" escape="false"/>

代码:

someText = A&lt;br /&gt;B&lt;br /&gt;C 

我发现的唯一方法是使用一个<pre>标签包裹<h:outputText,但是这还不够好导致其改变文字的字体,它看起来很奇怪,并且我希望有任何方法可以通过JSF的方式在使用属性文件时实现换行符

btw I l ooked在下面的链接,但它们不适合我

JSF h:outputText line break for long words within strings

Insert a line break inside p:commandButton

提前感谢!

回答

8

属性文件不需要包含XML转义的HTML。属性文件不会被像Facelets文件这样的XML解析器解析。只需将HTML纯文本放在属性文件中。

someText = A<br />B<br />C 

然后您可以使用<h:outputText value="#{text.someText}" escape="false" />通常的方法。

+0

谢谢,这很奇怪我可以发誓我已经尝试过那一个......现在工作:) – Daniel 2012-02-14 11:57:30

1

如果要使用格式设置,请使用<:outputText escape="false" ... />来尝试使用属性。

+0

已经尝试过那一个......我在我的问题中写道... b.t.w我试着用虚假和真实的... – Daniel 2012-02-14 08:50:48

0

我正面临着类似的问题:同样使用属性文件中的一个较长的文本,包含<br />

<h:outputText value="#{text.someText}" escape="false" /> 

,而在它的工作另一些情况下并没有呈现...

该字符串是这样的:

This is a longer string, <br />that should be wrapped. 

事实证明:这个问题是不是<br />,但未转义的, - ofc。为属性值生成一个列表,而不是预期的文本。 以防万一有人遇到类似的情况。

相关问题