2010-12-15 12 views
10

Ich habe eine Spring-Anwendung, die Tiles für die Ansichtsebene verwendet. So sind alle meine Seiten Definitionen wie folgt aussehen:Wie lokalisierte Seitentitel mit Spring und 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> 

Der Code, der Seite Titelsätze ist:

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

Ich mag würde mit Frühlings-Tag-lokalisieren:

<spring:message> 

Gibt es "Best Practices" wie geht das?

Antwort

18

Haben Sie schon einmal versucht, den Nachrichtenschlüssel in Ihre Kacheln-Variable zu legen und als Schlüssel für das Frühlings-Nachrichten-Tag zu verwenden.

So etwas:

<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

Dies ist genau das, was ich gesucht habe! Ich habe versucht <Frühling: Nachricht code = "<Fliesen: getAsString name =" titleKey "/>" /> und es hat nicht funktioniert. Vielen Dank. – Pavel

+0

@Pavel Ja, das würde nicht funktionieren, da Sie das Kacheln-Tag nicht wirklich als Attribut einbetten könnten ... es würde als Literal an das Tag übergeben werden. –

+0

Gute Lösung - die einzige andere Sache, die ich getan habe, ist 'page.main.title' durch' {1} .title' zu ​​ersetzen, wenn [Wildcards in Apache-Kacheln] verwendet wird (http://tiles.apache.org/framework/tutorial/ erweiterte/wildcard.html). Es spart Ihnen ein bisschen Zeit mit der Konfiguration. – user1366367

6

Die bisherige Antwort enthält mehrere kleine Fehler

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>