2009-05-18 10 views
2

Ich habe ein Usability-Problem in meiner Spring-Webapp, die Tiles als Ansichtstechnologie verwendet. Im Moment alle Seiten angezeigt werden die gleichen HEAD_TITLE und die PAGE_TITLE ist speziell für diese Seite:Die beste Methode zum Festlegen des HTML-Kopftitels in einer Spring + Tiles2-Anwendung?

<html> 
<head><title>HEAD_TITLE</title></head> 
<body> 
<h1>PAGE_TITLE</h1> 
</body> 
</html> 

Dies ist ein großes Problem, da die Benutzerfreundlichkeit der Geschichte Browser alle verschiedenen Seiten der Anwendung mit dem gleichen Titel auflistet. Der Grund, warum die HEAD_TITLE für alle Seiten gleich ist, ist, dass ich keinen vernünftigen Weg gefunden habe, die als HEAD_TITLE zu verwenden.

In den meisten Fällen kommt die PAGE_TITLE aus einem Nachrichtenbündel mit <fmt:message /> Tag und einige Parameter werden an es übergeben. Das Tiles-Layout ist so, dass der HEAD_TITLE bereits an diesem Punkt gesetzt sein sollte, da alle Seiten der Webanwendung das gleiche gemeinsame Layout verwenden, das die <HEAD> Elemente der Seiten neben anderen Dingen definiert.

Haben Sie Vorschläge, wie Sie dieses Usability-Problem beheben können? Sollte ich ein Anforderungsattribut "pageTitle" in meinen Spring-Controllern für alle Seiten setzen und dieses als PAGE_TITLE und auch als HEAD_TITLE verwenden? Oder ist es möglich, HEAD_TITLE in der seitenspezifischen JSP zu setzen?

Antwort

1

Erstellen Sie eine allgemeine Definition und definieren Sie headTitle- und pageTitle-Attribute.

<definition name="threeColumnLayout" template="/WEB-INF/ThreeColumnLayout.jsp" > 
    <put-attribute name="headTitle" value="" /> 
    <put-attribute name="pageTitle" value="" /> 
    <put-attribute name="left" value="/WEB-INF/left.jsp" /> 
    <put-attribute name="middle" value="" /> 
    <put-attribute name="right" value="/WEB-INF/right.jsp" /> 
</definition> 

Legen Sie die entsprechenden Werte in einer spezifischeren Definition fest.

<definition name="/user/new" extends="threeColumnLayout"> 
    <put-attribute name="headTitle" value="Administration" /> 
    <put-attribute name="pageTitle" value="Create User" /> 
    <put-attribute name="middle" value="WEB-INF/views/UserCreate.jsp" /> 
</definition> 

Verwenden <tiles:getAsString /> Tag solche Werte in jsp Seite abzurufen.

<head> 
    <title><tiles:getAsString name="headTitle"/></title> 
</head> 
<body> 
    <h1> 
     <title><tiles:getAsString name="pageTitle"/></title> 
    </h1> 
</body> 

Referenz: - http://tiles.apache.org/framework/tiles-jsp/tagreference.html#tiles:getAsString