promoPrice
変数を文字列ONLY $4.67
の一部として出力するにはどうすればよいですか?
<c:set var="promoPrice" value="4.67" />
<p>${(promoPrice != null) ? "ONLY $${promoPrice}" : "FREE"}</p>
すでに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または空の場合、とにかく印刷されません。
ストレート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>
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以降では、これに新しい_+=
_演算子を使用できます。