2010-12-15 5 views
10

私はビュー層にタイルを使用する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

良い解決策 - 私がやった唯一のもう一つの方法は、Apacheタイルの[ワイルドカード]を使うときに '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> 
関連する問題