如何连接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连接