如何在EL中连接一个字符串?

时间:2011-06-09 18:07:43

标签: jsp jstl el string-concatenation

如何将promoPrice变量作为字符串ONLY $4.67的一部分进行打印?

<c:set var="promoPrice" value="4.67" />
<p>${(promoPrice != null) ? "ONLY $${promoPrice}" : "FREE"}</p>

5 个答案:

答案 0 :(得分:33)

如果您已经使用EL 3.0(Java EE 7; WildFly,Tomcat 8,GlassFish 4等),那么您可以使用新的+=运算符:

<p>${not empty promoPrice ? 'ONLY $' += promoPrice : 'FREE'}</p>

如果您还没有使用EL 3.0,那么使用EL 2.2(Java EE 7; JBoss AS 6/7,Tomcat 7,GlassFish 3等)调用带参数的直接方法的功能,然后将其应用于String#concat()

<p>${not empty promoPrice ? 'ONLY $'.concat(promoPrice) : 'FREE'}</p>

或者如果您还没有使用EL 2.2,那么使用JSTL <c:set>来创建一个新的EL变量,其中的连接值只是内联值:

<c:set var="promoPriceString" value="ONLY $${promoPrice}" />
<p>${not empty promoPrice ? promoPriceString : 'FREE'}</p>

您的特定情况中,另一种方法是将表达式分为两部分:

<p>${not empty promoPrice ? 'ONLY $' : 'FREE'}${promoPrice}</p>

如果${promoPrice}为空或为空,则无论如何都不会打印。

答案 1 :(得分:3)

直接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>

答案 2 :(得分:0)

与EL 2.0+兼容的字符串连接的简单而强大的解决方案是使用中间变量:

<c:set var="promoPrice" value="4.67" />
<c:set var="priceText" value="ONLY ${promoPrice}" />
<p>${(promoPrice != null) ? priceText : "FREE"}</p>

根据@BalusC,从EL 2.2开始,您可以使用String#concat()方法进行连接,从EL 3.0开始,您可以使用新的+=运算符。

答案 3 :(得分:-1)

我做了类似这样的事情,我有一个变量mathjaxUrl,我想联系它其他字符串

<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" />

希望这能帮到你

答案 4 :(得分:-3)

这不会起作用吗?

<c:set var="promoPrice" value="4.67" />
<p>${(promoPrice != null) ? "ONLY $"${promoPrice} : "FREE"}</p>

请注意$ {promoPrice}在引号之外。这看起来是最简单的解决方案。