web-dev-qa-db-ja.com

ELで文字列を連結する方法は?

promoPrice変数を文字列ONLY $4.67の一部として出力するにはどうすればよいですか?

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

すでにEL3.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>
_

特定の場合では、別の方法は式を2つの部分に分割することです。

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

_${promoPrice}_がnullまたは空の場合、とにかく印刷されません。

38
BalusC

ストレートjs​​tlウェイ

<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>
3
joekarl

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以降では、これに新しい_+=_演算子を使用できます。

0
naXa