如何连接ELexpression式中的string?
我需要为<h:commandButton>
创build一个callback,而作为一个参数,我需要传递一个string与外部参数id连接的参数:
我尝试嵌套一个像这样的ELexpression式:
<h:commandButton ... action="#{someController.doSomething('#{id}SomeTableId')}" />
然而,这个失败与一个EL例外。 什么是正确的语法/方法来做到这一点?
如果你已经使用了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 <c:set>
来创build一个新的ELvariables,其串联值只是内联值:
<c:set var="tableId" value="#{id}SomeTableId" /> <h:commandButton ... action="#{someController.doSomething(tableId)}" />
也可以看看:
- EL中用于dynamicResourceBundle键的string连接