2009-05-18 7 views
2

J'ai un problème d'utilisabilité dans ma webapp de printemps qui utilise des tuiles comme technologie de vue. Au moment toutes les pages affichent le même HEAD_TITLE et la PAGE_TITLE est page spécifique:La meilleure façon de définir le titre de la tête HTML dans une application Spring + Tiles2?

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

Ceci est un problème d'utilisabilité important que l'histoire des navigateurs répertorie toutes différentes pages de l'application avec le même titre. La raison pour laquelle le HEAD_TITLE est la même pour toutes les pages, c'est que je n'ai pas trouvé un moyen raisonnable d'utiliser le PAGE_TITLE comme HEAD_TITLE.

Dans la plupart des cas, le PAGE_TITLE provient d'un paquet de message avec la balise <fmt:message /> et certains paramètres sont transmis. La disposition des carreaux est telle que HEAD_TITLE doit déjà être définie à ce moment car toutes les pages de la webapp utilisent la même mise en page commune qui définit les éléments <HEAD> des pages entre autres.

Des suggestions pour résoudre ce problème d'utilisabilité? Devrais-je définir un attribut de requête "pageTitle" dans mes contrôleurs Spring pour toutes les pages et l'utiliser comme PAGE_TITLE et aussi comme HEAD_TITLE? Ou est-il possible de définir en quelque sorte le HEAD_TITLE dans la page JSP spécifique de la page?

Répondre

1

Créez une définition générale et définissez les attributs headTitle et pageTitle.

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

Définissez les valeurs appropriées dans une définition plus spécifique.

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

tag Utilisez <tiles:getAsString /> pour récupérer ces valeurs dans la page jsp.

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

Référence: - http://tiles.apache.org/framework/tiles-jsp/tagreference.html#tiles:getAsString

Questions connexes