String concatenation in EL for dynamic ResourceBundle key

后端 未结 4 2064
终归单人心
终归单人心 2020-11-29 05:38

I have a resource bundle with entries like these:

entry1=value1
entry2=value2
entry3=value3

In my JSF page I\'m trying to use these keys dy

相关标签:
4条回答
  • 2020-11-29 05:47

    If you're already on Servlet 3.1 / EL 3.0 (Tomcat 8, WildFly 8, GlassFish 4, etc), make use of new EL 3.0 += operator:

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

    If you're only on Servlet 3.0 / EL 2.2 (Tomcat 7, JBoss AS 6/7, GlassFish 3, etc), make use of new EL 2.2 ability to directly invoke methods such as String#concat():

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

    If you're even not on Servlet 3.0 / EL 2.2 yet, make use of <c:set> to create another variable with the desired EL expression inlined:

    <c:set var="key" value="entry#{managedBean.entryIndex}" />
    <h:outputText value="#{msg[key]}" />
    
    0 讨论(0)
  • 2020-11-29 05:58

    I think you'll have to write a facelets function concat(str1, str2).

    0 讨论(0)
  • 2020-11-29 05:59

    This should solve your issue:

    <h:outputText value="#{msg['entry'.concat(managedBean.entryIndex)]}"/>
    
    0 讨论(0)
  • 2020-11-29 06:02

    Here's what worked for me : concat outside of []

    <h:outputText value="#{msg['entry'].concat(managedBean.entryIndex)}" />
    
    0 讨论(0)
提交回复
热议问题