【问题标题】:How to concatenate Strings in EL expression?如何在 EL 表达式中连接字符串?
【发布时间】:2015-07-10 00:59:22
【问题描述】:

我需要为<h:commandButton> 创建一个回调,而作为参数我需要传递一个与外部参数 id 字符串连接的参数:

我尝试嵌套类似这样的 EL 表达式:

<h:commandButton ... action="#{someController.doSomething('#{id}SomeTableId')}" />

但是,由于 EL 异常而失败。什么是正确的语法/方法?

【问题讨论】:

    标签: jsf el string-concatenation


    【解决方案1】:

    如果您已经使用 EL 3.0(Java EE 7;WildFly、Tomcat 8、GlassFish 4 等),那么您可以为此使用新的 += 运算符:

    <h:commandButton ... action="#{someController.doSomething(id += 'SomeTableId')}" />
    

    如果您还没有使用 EL 3.0,并且左手是真正的 java.lang.String 实例(因此不是 java.lang.Long),那么使用 EL 2.2 调用带参数的直接方法的能力,然后您申请String#concat():

    <h:commandButton ... action="#{someController.doSomething(id.concat('SomeTableId'))}" />
    

    或者,如果您还没有使用 EL 2.2,则使用 JSTL &lt;c:set&gt; 创建一个新的 EL 变量,其中包含刚刚内联的串联值:

    <c:set var="tableId" value="#{id}SomeTableId" />
    <h:commandButton ... action="#{someController.doSomething(tableId)}" />
    

    另见:

    【讨论】:

      猜你喜欢
      • 2013-06-10
      • 2011-09-11
      • 2012-07-03
      • 1970-01-01
      • 2010-09-22
      • 2011-11-15
      • 1970-01-01
      相关资源
      最近更新 更多