如何在EL表达式中连接字符串?

Ben*_*rel 17 jsf el string-concatenation

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

我尝试嵌套一个这样的EL表达式:

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

然而,由于EL异常,这失败了.这样做的正确语法/方法是什么?

Bal*_*usC 29

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

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

如果你还没有使用EL 3.0,并且左手是一个真实的java.lang.String实例(因此不是例如java.lang.Long),那么使用EL 2.2调用带参数的直接方法的功能,然后将其应用于String#concat():

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

或者,如果您还没有使用EL 2.2,那么使用JSTL <c:set>创建一个新的EL变量,其中的连接值只是内联值:

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

也可以看看: