所以我正在开发一个应用程序,我已将其设置为以下行
<h:outputText value = "#{msg['properties.help.keys.example.text']}" />
将从属性文件中打印一些输出值。我想要的是使用它来找到属性变量的字符串的一部分。
即
<h:outputText value = "#{msg['properties.help.keys.' + cc.attrs.key + '.text']}" />
cc.attrs.key是我传递给xhtml的值。如果可以,这可能吗?你是怎么做到的?
答案 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
之类的替代运算符,该运算符与gt
,lt
等符合
更新:在EL 3.0中,有一个新的EL运算符+=
用于连接EL表达式中的字符串。您的用例可以按如下方式解决:
<h:outputText value="#{msg['properties.help.keys' += cc.attrs.key += '.text']}" />