.properties存储长文本值/列表/其他

时间:2012-01-27 15:42:16

标签: jsf jsf-2 internationalization facelets

我正在将网站国际化,我似乎无法找到存储包含其他标签的大段落的方法。

例如,假设我有这个:( 称这个例子为1

<h1> the title </h1>
<p> 
    ... A very large paragraph ... <h:link value="click me" outocme="newPage"/> ... more text...
</p>

或者类似的东西:(称这个例子2

<h1> check this list out </h1>
<ul>
    <li> ... text here </li>
    <li> ... text here </li>
    <!-- more items -->
</ul>

我在JSF 2.0中并使用bundeled资源来对我的页面进行国际化,并且工作正常,因为有许多示例如何执行此操作。

但我喜欢能够做的就是示例1 (msg是我的变量链接到我的包)

<h1> #{msg['page.title']} </h1>
<p> #{msg['page.largeParagraph']} </p>

示例2 看起来像这样:

<h1> #{msg['page2.title']} </h1>
<ul>
    #{msg['page2.myList']}
</ul>

有没有办法做到这一点,或者我必须求助于这样的事情(使用示例1

<h1> #{msg['page.title']} </h1>
<p> 
    #{msg['page.largeParagraph.part1']} <h:link value="#{msg['page.largeParagraph.link']} #{msg['page.largeParagraph.part2']}
</p>

同样适用于示例2 ,其中我需要为每个<li>添加不同的条目。

当我们做这类事情时,最佳做法是什么?

感谢您的任何意见。

编辑:

我发现默认情况下会转义字符。因此我尝试过:

<p><h:outputText value="#{msg['page.paragraphWithLink']}" escape="false"/></p>

不幸的是,这对我没用。

编辑2:

使用escape="false"确实适用于<strong>,但绝对不适用于<h:link>

1 个答案:

答案 0 :(得分:2)

您无法在捆绑文件中指定JSF组件。它们不会被解析为组件树的一部分。 webbrowser也不了解JSF标签,它只能理解HTML。简单的HTML应该与<h:outputText escape="false">一起使用。

page.paragraphWithLink=lorem ipsum <a href="newPage.xhtml">click me</a> dolor sit amet