2010-12-15 12 views
10

Ho un'applicazione Spring che utilizza Tiles per il livello vista. Così tutte le mie definizioni pagine simile a questa:Come localizzare il titolo della pagina con Spring e 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> 

Il codice che definisce il titolo della pagina è:

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

Vorrei localizzare con tag Primavera:

<spring:message> 

Esistono "migliori pratiche" come farlo?

risposta

18

Hai mai provato a inserire la chiave del messaggio nella variabile tile e usarla come chiave per il tag messaggio a molla.

Qualcosa del genere:

<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

Questo è esattamente quello che stavo cercando! Ho provato <spring: message code = "<tiles: getAsString name =" titleKey "/>" /> e non ha funzionato. Grazie. – Pavel

+0

@Pavel si che non avrebbe funzionato perché non potevi veramente incorporare il tag tiles come attributo ... sarebbe passato come un valore letterale al tag. –

+0

Buona soluzione - l'unica altra cosa che ho fatto è sostituire 'page.main.title' con' {1} .title' quando si usano [caratteri jolly in tessere Apache] (http://tiles.apache.org/framework/tutorial/ avanzato/wildcard.html). Ti fa risparmiare un po 'di tempo con la configurazione. – user1366367

6

La risposta precedente contiene diversi piccoli errori

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