【问题标题】:How to use a map key in EL which is a concatenation of static string and EL variable [duplicate]如何在 EL 中使用映射键,它是静态字符串和 EL 变量的串联[重复]
【发布时间】:2013-08-15 10:22:12
【问题描述】:

我有一个<p:dataTable var="object">,里面有一个<p:commandLink>。在我的 bean 中,我有一个 Map ,我想在 <p:commandLink value> 中显示其值。我需要将一个键传递给这个映射,它是"someString"#{object.firstName} 的串联。我想要这样的工作:

value="#{bean.map['someString'+object.firstName]}"

我怎样才能做到这一点?

【问题讨论】:

    标签: jsf-2 primefaces el


    【解决方案1】:

    AC_1985 先生没有回应,但我有一些类似这些行的工作代码。

                                <h:panelGrid columns="1" cellpadding="5" style="width:100%">
                                    <p:inputTextarea id="factsText" style="width:100%; height:100%;" rows="18" cols="100" 
                                    value="#{property.model.property.facts[property.model.factsLanguage.code]}"
                                    counter="display" maxlength="2000" counterTemplate="{0} characters remaining." autoResize="false" />
                                    <h:outputText id="display" />
                                </h:panelGrid>
    

    这里有一个组合框,我可以在其中选择一种语言。然后从地图中检索所选语言的文本。

    感谢 My BalusC 一如既往的宝贵帮助。

    艾伦

    【讨论】:

      【解决方案2】:

      您可以通过使用刚刚内联的字符串和 EL 表达式创建一个新的 EL 变量来连接 EL 中的字符串。你可以使用&lt;c:set&gt;

      <c:set var="key" value="someString#{object.firstName}" />
      <p:commandLink value="#{bean.map[key]}" ... />
      

      或者,如果您已经在支持调用直接方法的 EL 2.2 上,那么您可以直接使用 String#concat() 方法。

      <p:commandLink value="#{bean.map['someString'.concat(object.firstName)]}" ... />
      

      如果您还没有使用 EL 2.2,但正在使用 EL 2.1,那么您始终可以安装 JBoss EL 以获得相同的功能。

      【讨论】:

      • 非常感谢 BalusC。将测试并让您知道我的发现。
      猜你喜欢
      • 1970-01-01
      • 2012-06-08
      • 2012-01-11
      • 2011-04-08
      • 1970-01-01
      • 2011-03-12
      • 2023-03-18
      • 2015-12-07
      • 2011-06-18
      相关资源
      最近更新 更多