2010-12-15 67 views
10

J'ai une application Spring qui utilise des tuiles pour le niveau de vue. Donc, toutes mes pages définitions ressemblent à ceci:Comment localiser le titre de la page avec Spring et 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> 

Le code qui fixe la page titre est:

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

Je voudrais localiser avec l'étiquette de printemps:

<spring:message> 

Y at-il "meilleures pratiques" comment faire cela?

Répondre

18

Avez-vous déjà essayé de placer la clé de message dans votre variable carreaux et de l'utiliser comme clé pour l'étiquette de message de printemps.

Quelque chose comme ça:

<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

C'est exactement ce que je cherchais! J'ai essayé <spring: code de message = "<tiles: getAsString name =" titleKey "/>" /> et cela n'a pas fonctionné. Merci. – Pavel

+0

@Pavel Oui, cela ne fonctionnerait pas car vous ne pourriez pas vraiment intégrer la balise tiles en tant qu'attribut ... elle serait transmise littéralement à la balise. –

+0

Bonne solution - la seule autre chose que j'ai faite est de remplacer 'page.main.title' par '{1} .title' quand vous utilisez [wildcards dans les tuiles Apache] (http://tiles.apache.org/framework/tutorial/ advanced/wildcard.html). Cela vous fait gagner un peu de temps avec la configuration. – user1366367

6

La réponse précédente contient plusieurs petites erreurs

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>