Как объединить строку в EL?
Как я могу получить promoPrice
переменная для печати как часть строки ONLY $4.67
?
<c:set var="promoPrice" value="4.67" />
<p>${(promoPrice != null) ? "ONLY $${promoPrice}" : "FREE"}</p>
5 ответов
Если вы уже используете 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}
является нулевым или пустым, он не будет напечатан в любом случае.
Прямой путь 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} находится вне кавычек. Это выглядит как самое простое решение.