2011-12-23 12 views
5

Potrzebuję użyć jakiegoś łącza jako argumentu do <spring:message /> i użyć do tego <c:set/>. Aby mieć link w stosunku do contextPath używam <c:url>. Dlaczego używanie <c:url/> w <c:set/> w środku jak poniżej nie działa?Korzystanie z c: URL w c: zestaw

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

Simlar użyciu <a href/> działa dobrze:

<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 muszę pracować dokładnie coś takiego:

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

Odpowiedz

13

Umieścić go w organizmie tag:

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

Albo jeśli chcesz XML dobrego formness:

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

<c:url> ma opcję ustawienia wyniku na zmiennej zamiast wyprowadzania go. Wystarczy ustawić atrybut var.

<c:url value="..." var="doc1" /> 
+0

nie zgadzam. Używam coś takiego: '" /> 'bez atrybutu var. – marioosh

+1

nie zgadzasz się z tym? Posiada opcję _ do tego.Jeśli nie użyjesz tej opcji, wynik zostanie wyprowadzony do Jeśli go używasz (podaj 'var'), zostanie tam zapisany zamiast: – Bozho

+0

@marioosh zobacz moją zaktualizowaną odpowiedź – adarshr

3

Można to zrobić:

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

Ponieważ wiadomość jest doc.link = Doc is {0} gdzie w {0} pojawia się na końcu wiadomości, można po prostu zmienić wiadomość do doc.link = Doc is i wykonaj następujące czynności:

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

To zrobi dokładnie to, co chcesz robić!