在msg中使用变量属性

时间:2012-02-20 20:08:39

标签: jsf el

所以我正在开发一个应用程序,我已将其设置为以下行

<h:outputText value = "#{msg['properties.help.keys.example.text']}" />

将从属性文件中打印一些输出值。我想要的是使用它来找到属性变量的字符串的一部分。

 <h:outputText value = "#{msg['properties.help.keys.' + cc.attrs.key + '.text']}" />

cc.attrs.key是我传递给xhtml的值。如果可以,这可能吗?你是怎么做到的?

1 个答案:

答案 0 :(得分:3)

你不能像这样在EL表达式中连接字符串。 +在EL中仅为数字的和运算符。在将字符串嵌套到另一个EL表达式之前,需要使用<c:set>将字符串与EL表达式连接起来。然后,仅通过内联表达式来连接字符串。

<c:set var="key" value="properties.help.keys.#{cc.attrs.key}.text" />
<h:outputText value="#{msg[key]}" />

在即将发布的EL 3.0中,将有new EL operator &用于连接EL表达式中的字符串。然而,使用&字符作为运算符在基于XML的视图技术中是可记录的,因为它是一个保留的XML字符,我一直在与EL人讨论这个问题。应该可以使用ct之类的替代运算符,该运算符与gtlt等符合


更新:在EL 3.0中,有一个新的EL运算符+=用于连接EL表达式中的字符串。您的用例可以按如下方式解决:

<h:outputText value="#{msg['properties.help.keys' += cc.attrs.key += '.text']}" />