This question already has an answer here:
- How to concatenate a String in EL? 5 answers
I would like to concatenate a string within a ternary operator in EL(Expression Language).
Suppose there is a variable named value. If it's empty, I want to use some default text. Otherwise, I need to append it with some static text.
${(empty value)? "none" : value + " enabled"}
This will not compile however. What would be a correct way to write this? Or is this even possible?
With EL 2 you can do the following:
1.The +(operator) has not effect to that in using EL. 2.so this is the way,to use that
is this helpful to You ?
This answer is obsolete. Technology has moved on. Unless you're working with legacy systems see Joel's answer.
There is no string concatenation operator in EL. If you don't need the concatenated string to pass into some other operation, just put these expressions next to each other:
Since Expression Language 3.0, it is valid to use += operator for string concatenation.
Quoting EL 3.0 Specification.
it also can be a great idea using concat for EL + MAP + JSON problem like in this example :
#{myMap[''.concat(myid)].content}
If you're already on EL 3.0 (Java EE 7; WildFly, Tomcat 8, GlassFish 4, etc), then you could use the new
+=
operator for this:If you're however not on EL 3.0 yet, and the
value
is a genuinejava.lang.String
instance (and thus not e.g.java.lang.Long
), then use EL 2.2 (Java EE 7; JBoss AS 6/7, Tomcat 7, GlassFish 3, etc) capability of invoking direct methods with arguments, which you then apply onString#concat()
:Or if you're even not on EL 2.2 yet, then use JSTL
<c:set>
to create a new EL variable with the concatenated values just inlined in value: