如何使用Spring和Tiles2本地化页面标题?

时间:2010-12-15 09:17:05

标签: spring localization internationalization tiles

我有一个Spring应用程序,它使用Tiles作为视图层。所以我的所有页面定义都是这样的:

<definition name="main.page" template="/tiles/layout.jsp">
    <put-attribute name="title" value="Page Title"/>
    <put-attribute name="header" value="/tiles/header.jsp"/>
    <put-attribute name="body" value=""/>
    <put-attribute name="footer" value="/tiles/footer.jsp"/>
</definition>

<definition name="welcome.page" extends="main.page">
    <put-attribute name="title" value="Main Page"/>
    <put-attribute name="body" value="/pages/welcome.jsp"/>
</definition>

设置页面标题的代码是:

<title><tiles:getAsString name="title"/></title>

我想用Spring标签进行本地化:

<spring:message>

有没有“最佳实践”如何做到这一点?

2 个答案:

答案 0 :(得分:18)

您是否曾尝试将消息密钥放入tile变量中并将其用作spring消息标记的键。

类似的东西:

<definition name="welcome.page" extends="main.page">
    <put-attribute name="titleKey" value="page.main.title"/>
    <put-attribute name="body" value="/pages/welcome.jsp"/>
</definition>

JSP:

<set var"titleKey"><tiles:getAsString name="titleKey"/></set>
<title><spring:message code=${titleKey} /></title>

答案 1 :(得分:6)

上一个答案包含几个小错误

tiles.xml

<definition name="main" template="/WEB-INF/jsp/template.jsp">
        <put-attribute name="titleKey" value="main.title" />
    <put-attribute name="body" value="/WEB-INF/jsp/main.jsp" />
</definition>

jsp(/WEB-INF/jsp/template.jsp)

<c:set var="titleKey"><tiles:getAsString name="titleKey"/></c:set>
<title><spring:message code="${titleKey}"></spring:message> </title>