我需要使用一些链接作为<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/>
的Simlar效果很好:
<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}
修改 我需要完全像这样的工作:
<c:set value='<a href="<c:url value="/x"/>">here</a>' var='doc1'/>
答案 0 :(得分:14)
将它放在标签正文中:
<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}"/>
答案 1 :(得分:4)
<c:url>
可以选择将结果设置为变量,而不是输出它。只需设置var
属性即可。
<c:url value="..." var="doc1" />
答案 2 :(得分:3)
你可以这样做:
<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>
这将完全符合您的要求!