h:带有来自资源包的换行符的outputText(属性文件)

时间:2012-02-14 08:02:47

标签: jsf-2

我正在尝试打破<h:outputText的value属性中显示的文本,如果我将文本直接放在<h:outputText的value属性中,则可以正常工作,但如果我将相同的文本放在属性文件中,它就会停止工作

这是一个文本的例子

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

我找到的唯一方法就是用<h:outputText标签包裹<pre>,但这不够好因为它改变了文本的字体,看起来很奇怪,而且我希望那里有任何方式是一种在使用属性文件时实现换行符的JSF方法

b.t.w我查看了以下链接,但它们对我没有好处

JSF h:outputText line break for long words within strings

Insert a line break inside p:commandButton

提前致谢!

3 个答案:

答案 0 :(得分:8)

属性文件不需要包含XML转义的HTML。属性文件不会像Facelets文件那样的XML解析器解析。只需将HTML plain放在属性文件中即可。

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

然后你可以按常规方式使用<h:outputText value="#{text.someText}" escape="false" />

答案 1 :(得分:1)

如果要使用格式,请尝试将<:outputText escape="false" ... />与属性一起使用。

答案 2 :(得分:0)

我遇到了一个类似的问题:同时使用属性文件中较长的文本,包含<br />的文本未使用

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

虽然在其他一些情况下它起作用了......

字符串看起来像这样:

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

事实证明:问题是 <br />,而是未转义的, - ofc。生成属性值的List而不是期望的Text。 以防任何人面对这样的事情。