Cómo concatenar una cadena en EL?

¿Cómo puedo obtener la variable promoPrice para imprimir como parte de la cadena ONLY $4.67 ?

  

${(promoPrice != null) ? "ONLY $${promoPrice}" : "FREE"}

Si ya tiene EL 3.0 (Java EE 7, WildFly, Tomcat 8, GlassFish 4, etc.), puede usar el nuevo operador += para esto:

 

${not empty promoPrice ? 'ONLY $' += promoPrice : 'FREE'}

Si todavía no está en EL 3.0, entonces use EL 2.2 (Java EE 7; JBoss AS 6/7, Tomcat 7, GlassFish 3, etc.) la capacidad de invocar métodos directos con argumentos, que luego aplica en String#concat() :

 

${not empty promoPrice ? 'ONLY $'.concat(promoPrice) : 'FREE'}

O si aún no está en EL 2.2 todavía, entonces use JSTL para crear una nueva variable EL con los valores concatenados recién en su valor:

  

${not empty promoPrice ? promoPriceString : 'FREE'}

En su caso particular , otra forma es dividir la expresión en dos partes:

 

${not empty promoPrice ? 'ONLY $' : 'FREE'}${promoPrice}

Si ${promoPrice} es nulo o está vacío, no se imprimirá de todos modos.

Camino recto jstl

  

ONLY $${promoPrice} FREE

Una solución directa y robusta para la concatenación de cadenas, que es compatible con EL 2.0+, es usar una variable intermedia:

   

${(promoPrice != null) ? priceText : "FREE"}

De acuerdo con @BalusC , comenzando desde EL 2.2 puede hacer la concatenación usando String#concat() método String#concat() , y comenzando desde EL 3.0 puede usar el nuevo operador += para esto.

Hice algo como esto, donde tengo una variable mathjaxUrl y quiero ponerme en contacto con otra cadena

  ... some other stuff here  

espero que esto te ayude

¿No funcionará esto?

  

${(promoPrice != null) ? "ONLY $"${promoPrice} : "FREE"}

Tenga en cuenta que el $ {promoPrice} está fuera de las cotizaciones. Esta parece la solución más simple.