Присвоение результата другого JSTL отмечает как значение одного тега JSTL

У меня есть это, которое работает:

<c:choose>
    <c:when test="${sometest}">
        Hello, world!
    </c:when>
    <c:otherwise>
        <fmt:message key="${page.title}" />
    </c:otherwise>
</c:choose>

И я хочу изменить его на это:

<c:choose>
    <c:when test="${sometest}">
        <c:set var="somevar" scope="page" value="Hello, world!"/>
    </c:when>
    <c:otherwise>
        <c:set var="somevar" scope="page" value="<fmt:message key="${page.title}">"
    </c:otherwise>
</c:choose

Но конечно следующая строка не корректна:

<c:set var="somevar" scope="page" value="<fmt:message key="${page.title}">"

Как я могу присвоить somevar переменной строку, следующую из вызова к fmt:message?

13
задан BalusC 31 May 2010 в 18:17
поделиться

3 ответа

fmt: message также имеет атрибут var , который эффективно выполняет то, что вы хотите.

 <fmt:message key="${page.title}" var="somevar" />

Вот и все. Добавьте в закладки JSTL tlddoc , он может пригодиться.

25
ответ дан 1 December 2019 в 19:01
поделиться

Также можно указать значение для установки с помощью содержимого тела, а не через атрибут value:

<c:set var="somevar" scope="page">
  <fmt:message key="${page.title}"/>
</c:set>
9
ответ дан 1 December 2019 в 19:01
поделиться

Вам придется иметь дело с:

<c:set var="title"><fmt:message key="${page.title}"></c:set>
<c:set var="somevar" scope="page" value="${title}" />

Поскольку вы не можете использовать в этом месте, по моему опыту, он связан с вложением, как вы предложили. Или воспользуйтесь предложением @balusc; -)

5
ответ дан 1 December 2019 в 19:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: