2009-05-18 8 views
2

タイルをビューテクノロジとして使用している私のSpring webappでは使い勝手の問題があります。現時点で ページのすべてが同じHEAD_TITLEを表示し、PAGE_TITLEは、ページ固有のものです:Spring + Tiles2アプリケーションでHTMLヘッドのタイトルを設定する最も良い方法は?

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

これは、同じタイトルのアプリケーションのすべての異なるページのブラウザの履歴リストなどの主要なユーザビリティの問題です。 HEAD_TITLEがすべてのページで同じ理由は、HEAD_TITLEとしてPAGE_TITLEを使用する合理的な方法が見つからないことです。

ほとんどの場合、PAGE_TITLEは、<fmt:message />タグのメッセージバンドルに属し、 のパラメータが渡されます。タイルレイアウトは、ウェブアプリケーションのすべてのページが他のものの中のページの<HEAD>要素を定義する同じ共通レイアウトを使用するため、その時点でHEAD_TITLEが既に設定されているようなレイアウトです。

このユーザビリティの問題を解決する方法を教えてください。私は、すべてのページのSpringコントローラに「pageTitle」リクエスト属性を設定し、それをPAGE_TITLEとして、またHEAD_TITLEとして使用する必要がありますか?または、何とかページ固有のJSPでHEAD_TITLEを設定することは可能ですか?

答えて

1

一般的な定義を作成し、headTitle属性と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> 

より具体的な定義で適切な値を設定してください。

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

使用<tiles:getAsString />タグは、JSPページでこのような値を取得します。

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

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

関連する問題