and - jsp jstl tags
¿Cómo concatenar una cadena en EL? (5)
¿Cómo consigo que la variable promoPrice
imprima como parte de la cadena ONLY $4.67
?
<c:set var="promoPrice" value="4.67" />
<p>${(promoPrice != null) ? "ONLY $${promoPrice}" : "FREE"}</p>
¿No funcionará esto?
<c:set var="promoPrice" value="4.67" />
<p>${(promoPrice != null) ? "ONLY $"${promoPrice} : "FREE"}</p>
Observe que $ {promoPrice} está fuera de las comillas. Esto parece la solución más simple.
Camino recto jstl
<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>
Hice algo como esto donde tengo una variable mathjaxUrl
y quiero contactarla con otra cadena
<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" />
espero que esto te ayude
Si ya está en EL 3.0 (Java EE 7; WildFly, Tomcat 8, GlassFish 4, etc.), entonces podría usar el nuevo operador +=
para esto:
<p>${not empty promoPrice ? ''ONLY $'' += promoPrice : ''FREE''}</p>
Sin embargo, si aún no está en EL 3.0, use la capacidad de EL 2.2 (Java EE 7; JBoss AS 6/7, Tomcat 7, GlassFish 3, etc.) para invocar métodos directos con argumentos, que luego aplica en String#concat()
:
<p>${not empty promoPrice ? ''ONLY $''.concat(promoPrice) : ''FREE''}</p>
O si aún no estás en EL 2.2, usa JSTL <c:set>
para crear una nueva variable EL con los valores concatenados simplemente en el valor:
<c:set var="promoPriceString" value="ONLY $${promoPrice}" />
<p>${not empty promoPrice ? promoPriceString : ''FREE''}</p>
En su caso particular , otra forma es dividir la expresión en dos partes:
<p>${not empty promoPrice ? ''ONLY $'' : ''FREE''}${promoPrice}</p>
Si ${promoPrice}
es nulo o está vacío, no se imprimirá de todos modos.
Una solución sencilla y robusta para la concatenación de cadenas, que es compatible con EL 2.0+, es usar una variable intermedia:
<c:set var="promoPrice" value="4.67" />
<c:set var="priceText" value="ONLY ${promoPrice}" />
<p>${(promoPrice != null) ? priceText : "FREE"}</p>
De acuerdo con @BalusC , a partir de EL 2.2 puede hacer concatenación usando String#concat()
método String#concat()
, y a partir de EL 3.0 puede usar el nuevo operador +=
para esto.