2011-12-23 16 views
5

Ho bisogno di utilizzare alcuni collegamenti come argomento a <spring:message /> e utilizzare <c:set/> per quello. Per avere un collegamento relativo a contextPath uso <c:url>. Perché l'utilizzo di <c:url/> in <c:set/> all'interno come di seguito non funziona?Utilizzo di c: url in c: set

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

Simlar utilizzando <a href/> opere buone:

<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 ho bisogno di lavorare esattamente qualcosa di simile:

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

risposta

13

Metti nel corpo tag:

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

Oppure, se volete XML ben 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> ha un'opzione per impostare il risultato su una variabile, anziché emetterlo. Basta impostare l'attributo var.

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

io non sono d'accordo. Sto usando qualcosa del genere: '" /> 'senza l'attributo var. – marioosh

+1

non sono d'accordo con cosa? Ha un _option_ per farlo.Se non si utilizza quell'opzione, verrà emesso il risultato per il Se lo usi (specifica 'var'), verrà archiviato lì invece – Bozho

+0

@marioosh per favore vedi la mia risposta aggiornata – adarshr

3

È possibile farlo:

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

Perché messaggio è doc.link = Doc is {0} dove nel {0} appare alla fine del messaggio, si può semplicemente cambiare il messaggio a doc.link = Doc is e procedere come segue:

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

Che farà esattamente quello che vuoi fare!