2009-05-18 85 views
2

我在使用Tiles作爲視圖技術的Spring webapp中存在可用性問題。 目前所有的頁面顯示相同HEAD_TITLEPAGE_TITLE是特定頁面:在Spring + Tiles2應用程序中設置HTML標題的最佳方法?

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

這是一個重大的可用性問題作爲瀏覽器歷史記錄中列出標題相同的應用程序的所有不同的網頁。 HEAD_TITLE之所以與所有頁面相同,是因爲我沒有找到合理的方式將PAGE_TITLE用作HEAD_TITLE

在大多數情況下,PAGE_TITLE來自帶有<fmt:message />標記的消息包和 某些參數傳遞給它。 Tiles佈局是這樣的,HEAD_TITLE應該已經設置在那個點上,因爲webapp的所有頁面使用相同的公共佈局,其定義頁面中的<HEAD>元素以及其他東西。

任何建議如何解決這個可用性問題?我是否應該在我的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

相關問題