2010-12-15 4 views
10

뷰 계층에 Tiles를 사용하는 Spring 애플리케이션이 있습니다. 그래서 내 모든 페이지의 정의는 다음과 같이 :Spring 및 Tiles2에서 페이지 제목을 현지화하는 방법은 무엇입니까?

<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:message> 

이 거기에 어떤는 "최선의 방법"을 어떻게?

답변

18

tiles 변수에 메시지 키를 넣고 스프링 메시지 태그의 키로 사용하려고 시도한 적이 있습니까? 그런

뭔가 :

<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> 
+0

이것은 내가 찾고있는 것입니다. 나는 을 시도했다. <spring : message code = "<tiles : getAsString name ="titleKey "/>"/> 그리고 제대로 작동하지 않았다. 감사. – Pavel

+0

속성으로 타일 태그를 실제로 포함 할 수 없으므로 @Pavel 예가 작동하지 않습니다 ... 태그에 리터럴로 전달 될 것입니다. –

+0

좋은 해결책 - 제가 한 유일한 또 다른 방법은 아파치 타일에있는 와일드 카드를 사용할 때'page.main.title'을'{1} .title'로 바꾸는 것입니다. (http://tiles.apache.org/framework/tutorial/ advanced/wildcard.html). 구성을 통해 약간의 시간을 절약 할 수 있습니다. – user1366367

6

이전의 대답에 포함 된 여러 작은 실수

<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> 

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

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