Spring FORM标签库 - radiobutton,从消息源加载其LABEL属性

时间:2011-10-16 12:40:58

标签: spring internationalization radio-button

我正在开发一个基于Spring MVC的应用程序,并使用spring标签库进行表单数据绑定。我很高兴地使用了标签,直到我意识到与单个无线电相关联的标签没有从消息源中获取,但我在JSP中对它们进行了硬编码。我之前没有注意到,所以现在我想解决这个问题,在这里遇到一个愚蠢的小问题,我希望你能帮助我。

好的,这有效:

<form:radiobutton path="metric" value="0" label="inches" />
<form:radiobutton path="metric" value="1" label="centimeters" />

这不是。

<form:radiobutton path="metric" value="0" label="<fmt:message key="label.calculator.units.imperial" />" />
<form:radiobutton path="metric" value="1" label="<fmt:message key="label.calculator.units.metric" /> " />

问题是fmt:message标签的嵌套格式为:radiobutton标签。我得到引起:org.apache.jasper.JasperException:/WEB-INF/jsp/calculator/calculator.jsp(15,100)PWC6212:堆栈跟踪中的等号符号

还有其他方法可以从消息源加载单选按钮的标签吗?我想我可以使用<c-rt:set>首先将消息来源中的消息文本设置为变量,然后${varname}将其设置为label=""属性...但这似乎有点啰嗦。有什么建议吗?

2 个答案:

答案 0 :(得分:4)

经常没有使用<form:radiobutton>标记,但据我所知,您别无选择,只能将消息设置为变量,然后像label="${varname}"一样使用它。

另一个选择是松开label属性,只需手动打印标签,如:

<spring:message code="label.calculator.units.imperial" /><form:radiobutton path="metric" value="0" />
<spring:message code="label.calculator.units.metric" /><form:radiobutton path="metric" value="1" />

当然,HTML结果会有所不同。您必须自己控制标签,而不是生成<label for="..."的单选按钮标签。

答案 1 :(得分:0)

可以设置&#39; var&#39; spring的属性:message标签:

<spring:message var="inches" code="label.calculator.units.imperial"/>
<spring:message var="centimeters" code="label.calculator.units.imperial"/>

<form:radiobutton path="metric" value="0" label="${inches}"/>
<form:radiobutton path="metric" value="1" label="${centimeters}"/>