我有一个包含以下条目的资源包:
entry1=value1
entry2=value2
entry3=value3
在我的 JSF 页面中,我尝试动态使用这些键。条目的 ID 来自托管 bean。我认为应该是这样的:
<h:outputText value="#{msg['entry' managedBean.entryIndex]}"/>
我怎样才能做到这一点?
我有一个包含以下条目的资源包:
entry1=value1
entry2=value2
entry3=value3
在我的 JSF 页面中,我尝试动态使用这些键。条目的 ID 来自托管 bean。我认为应该是这样的:
<h:outputText value="#{msg['entry' managedBean.entryIndex]}"/>
我怎样才能做到这一点?
如果您已经使用 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]}" />
这应该可以解决您的问题:
<h:outputText value="#{msg['entry'.concat(managedBean.entryIndex)]}"/>
这对我有用: concat [] 之外
<h:outputText value="#{msg['entry'].concat(managedBean.entryIndex)}" />
我认为您必须编写一个 facelets 函数concat(str1, str2)
。