21

我有一个包含以下条目的资源包:

entry1=value1
entry2=value2
entry3=value3

在我的 JSF 页面中,我尝试动态使用这些键。条目的 ID 来自托管 bean。我认为应该是这样的:

<h:outputText value="#{msg['entry' managedBean.entryIndex]}"/>

我怎样才能做到这一点?

4

4 回答 4

47

如果您已经使用 Servlet 3.1 / EL 3.0(Tomcat 8、WildFly 8、GlassFish 4 等),请使用新的 EL 3.0+=运算符:

<h:outputText value="#{msg['entry' += managedBean.entryIndex]}" />

如果您只使用 Servlet 3.0 / EL 2.2(Tomcat 7、JBoss AS 6/7、GlassFish 3 等),请利用新的 EL 2.2 功能直接调用以下方法String#concat()

<h:outputText value="#{msg['entry'.concat(managedBean.entryIndex)]}" />

如果您还没有使用 Servlet 3.0 / EL 2.2,请使用<c:set>创建另一个内联所需 EL 表达式的变量:

<c:set var="key" value="entry#{managedBean.entryIndex}" />
<h:outputText value="#{msg[key]}" />
于 2011-01-31T15:03:19.930 回答
8

这应该可以解决您的问题:

<h:outputText value="#{msg['entry'.concat(managedBean.entryIndex)]}"/>
于 2011-08-16T15:11:12.857 回答
2

这对我有用: concat [] 之外

<h:outputText value="#{msg['entry'].concat(managedBean.entryIndex)}" />
于 2017-09-15T09:06:51.723 回答
0

我认为您必须编写一个 facelets 函数concat(str1, str2)

于 2011-01-31T14:33:29.707 回答