Использование c: url в c: set - PullRequest
       3

Использование c: url в c: set

6 голосов
/ 23 декабря 2011

Мне нужно использовать некоторую ссылку в качестве аргумента для <spring:message /> и использовать для этого <c:set/>. Чтобы иметь ссылку относительно contextPath, я использую <c:url>. Почему использование <c:url/> в <c:set/> внутри, как показано ниже, не работает?

<c:set value='<c:url value="/x"/>' var='doc1'/>
<spring:message code="doc.link" arguments="${doc1}"/> <%-- ${doc1} is empty --%>

Симлар с использованием <a href/> работает хорошо:

<c:set value='<a href="/fullurl/x">here</a>' var='doc1'/>
<spring:message code="doc.link" arguments="${doc1}"/>

messages.properties:

doc.link = Doc is {0}

EDIT Мне нужно работать именно так:

<c:set value='<a href="<c:url value="/x"/>">here</a>' var='doc1'/>

Ответы [ 3 ]

14 голосов
/ 23 декабря 2011

Поместите это в тело тега:

<c:set var="doc1"><a href="<c:url value="/x" />">here</a></c:set>
<spring:message code="doc.link" arguments="${doc1}"/>

Или, если вам нужна XML-корректность

<c:url var="url" value="/x" />
<c:set var="doc1"><a href="${url}">here</a></c:set>
<spring:message code="doc.link" arguments="${doc1}"/>
5 голосов
/ 23 декабря 2011

<c:url> имеет возможность установить результат в переменную, а не выводить ее. Просто установите атрибут var.

<c:url value="..." var="doc1" />
4 голосов
/ 23 декабря 2011

Вы можете сделать это:

<c:url var="myURL" value="/x" />
<spring:message code="doc.link" arguments="${myURL}" />

Поскольку ваше сообщение doc.link = Doc is {0}, где в конце сообщения отображается {0}, вы можете просто изменить сообщение на doc.link = Doc is и сделатьследующим образом:

<spring:message code="doc.link" /><a href="<c:url value="/x"/>">here</a>

Это будет именно то, что вы хотите сделать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...