Как объединить строки в выражении EL? - PullRequest
16 голосов
/ 13 марта 2012

Мне нужно создать обратный вызов для <h:commandButton>, в то время как в качестве параметра мне нужно передать аргумент, связанный со строкой с идентификатором внешнего параметра:

Я пытался вложить выражение EL примерно так:

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

Однако это не удалось, за исключением EL. Каков правильный синтаксис / подход для этого?

1 Ответ

28 голосов
/ 13 марта 2012

Если вы уже используете 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 для вызова прямых методов с аргументами, которые затем применяются к * 1007.*:

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

Или, если вы еще не используете EL 2.2, используйте JSTL <c:set>, чтобы создать новую переменную EL с объединенными значениями, просто вставленными в значение:

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

См. Также:

...