Как да накарам променливата promoPrice
да се отпечата като част от низа ONLY $4.67
?
<c:set var="promoPrice" value="4.67" />
<p>${(promoPrice != null) ? "ONLY $${promoPrice}" : "FREE"}</p>
Как да накарам променливата promoPrice
да се отпечата като част от низа ONLY $4.67
?
<c:set var="promoPrice" value="4.67" />
<p>${(promoPrice != null) ? "ONLY $${promoPrice}" : "FREE"}</p>
Ако вече сте на 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}
е null или празен, той така или иначе няма да бъде отпечатан.
'str1'.concat(' str2')
се проваля в EL 2.1 (Tomcat 6) с тази грешка org.apache.jasper.JasperException: /WEB-INF/pages/x.jsp Функцията concat трябва да се използва с префикс, когато не е посочено пространство от имена по подразбиране.
- person naXa; 11.12.2017
Прав 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, можете да използвате нов оператор +=
за това.
Направих нещо подобно, където имам променлива 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" />
надявам се това да ви помогне
Това няма ли да свърши работа?
<c:set var="promoPrice" value="4.67" />
<p>${(promoPrice != null) ? "ONLY $"${promoPrice} : "FREE"}</p>
Забележете, че ${promoPrice} е извън кавичките. Това изглежда като най-простото решение.
${item[${i}]}
, са незаконни.
- person McDowell; 10.06.2011