fmt标记的问题

时间:2011-01-03 10:21:07

标签: jsp spring-mvc jstl

我目前正在开发一个spring项目,我不得不在JSP中使用fmt标签。事实上,fmt标签对我来说很好,它从messages.properties文件中读取正确的值。

例如:

<fmt:message key="General.Settings"/>

.properties文件中:

General.Settings=Settings

它读得很完美。

现在,将fmt标记放在另一个JSTL标记中时存在问题。

例如:

<input name="commit" value= <fmt:message key="AllMessages.PostThisMessage"/>
                    type="submit" onclick="return isEmpty();" />

.properties文件内:

AllMessages.PostThisMessage=Post this message

但它只显示“发布”一词而不是“发布此消息”

与其他JSTL标记内的所有其他fmt标记相同。

有什么建议吗?

4 个答案:

答案 0 :(得分:17)

不要像这样嵌套你的标签,这是令人困惑和容易出错的。最好做这件事:

<fmt:message key="AllMessages.PostThisMessage" var="myMessage"/>
<input name="commit" value="${myMessage}" type="submit" onclick="return isEmpty();" />

如果你真的使用这种语法:

value= <fmt:message key="AllMessages.PostThisMessage"/>

然后,这是一个奇迹,它会产生无效的HTML。

答案 1 :(得分:1)

您忘记了value参数的引号:

<input name="commit" value="<fmt:message key="AllMessages.PostThisMessage"/>" type="submit" onclick="return isEmpty();" />

但如前所述,嵌套标签更难阅读。

答案 2 :(得分:1)

不确定是否因为我的JST库版本,但我无法直接在var上设置<fmt:message />。我必须创建一个c:set才能工作:

<c:set var="buttonEdit">
    <fmt:message key="EDIT" bundle="${yourBundle}"/>
</c:set>
<input class="button edit" type="submit" title="your Title" value="${buttonEdit}"  />

我是JSP的新手,所以我希望这很好。 ;-)

答案 3 :(得分:1)

在value属性周围添加单引号就可以了。

<input name="commit" value='<fmt:message key="AllMessages.PostThisMessage"/>' type="submit" onclick="return isEmpty();" />