How do I get the promoPrice
variable to print as part of the string ONLY $4.67
?
<c:set var="promoPrice" value="4.67" />
<p>${(promoPrice != null) ? "ONLY $${promoPrice}" : "FREE"}</p>
How do I get the promoPrice
variable to print as part of the string ONLY $4.67
?
<c:set var="promoPrice" value="4.67" />
<p>${(promoPrice != null) ? "ONLY $${promoPrice}" : "FREE"}</p>
If you're already on EL 3.0 (Java EE 7; WildFly, Tomcat 8+, GlassFish 4+, Payara, WAS 9+, etc), then you could use the new +=
operator for this:
<p>${not empty promoPrice ? 'ONLY $' += promoPrice : 'FREE'}</p>
If you're however not on EL 3.0 yet, then use EL 2.2 (Java EE 6; JBoss AS 6/7, Tomcat 7, GlassFish 3, WAS 8, etc) capability of invoking direct methods with arguments, which you then apply on String#concat()
:
<p>${not empty promoPrice ? 'ONLY $'.concat(promoPrice) : 'FREE'}</p>
Or if you're even not on EL 2.2 yet (Java EE 5 or older; JBoss AS 5- Tomcat 6-, WAS 7-, etc), then use JSTL <c:set>
to create a new EL variable with the concatenated values just inlined in value:
<c:set var="promoPriceString" value="ONLY $${promoPrice}" />
<p>${not empty promoPrice ? promoPriceString : 'FREE'}</p>
In your particular case, another way is to split the expression in two parts:
<p>${not empty promoPrice ? 'ONLY $' : 'FREE'}${promoPrice}</p>
If ${promoPrice}
is null or empty, it won't be printed anyway.
'str1'.concat(' str2')
fails in EL 2.1 (Tomcat 6) with this error org.apache.jasper.JasperException: /WEB-INF/pages/x.jsp The function concat must be used with a prefix when a default namespace is not specified. –
Warship Straight jstl way
<c:set var="promoPrice" value="4.67" />
<p>
<c:choose>
<c:when test="${(promoPrice != null)}">
ONLY $${promoPrice}
</c:when>
<c:otherwise>
FREE
<c:otherwise>
</c:choose>
</p>
A straightforward and robust solution for string concatenation, that is compatible with EL 2.0+, is to use an intermediate variable:
<c:set var="promoPrice" value="4.67" />
<c:set var="priceText" value="ONLY ${promoPrice}" />
<p>${(promoPrice != null) ? priceText : "FREE"}</p>
According to @BalusC, starting from EL 2.2 you can do concatenation using String#concat()
method, and starting from EL 3.0 you can use the new +=
operator for this.
I did something like this where I have a variable mathjaxUrl
and I want to contact it other string
<c:set var="mathjaxUrl" value="https://cdnjs.cloudflare.com/ajax/libs/mathjax" />
... some other stuff here
<c:set var="mathjaxUrl" value="${mathjaxUrl}?config=TeX-AMS-MML_HTMLorMML" />
hope this help you
Won't this work ?
<c:set var="promoPrice" value="4.67" />
<p>${(promoPrice != null) ? "ONLY $"${promoPrice} : "FREE"}</p>
Notice that the ${promoPrice} is outside the quotes. This looks like the simplest solution.
${item[${i}]}
, are illegal. –
Daff © 2022 - 2024 — McMap. All rights reserved.