Как локализовать заголовок страницы с помощью Spring и Tiles2?
У меня есть приложение 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>
Есть ли какие-либо "лучшие практики", как это сделать?
Ответы
Ответ 1
Вы когда-нибудь пытались поместить ключ сообщения в переменную плитки и использовать ее как ключ для тега сообщения 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>
Ответ 2
Предыдущий ответ содержит несколько небольших ошибок
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>