2012-04-11 16 views
1

我有一個非常基本的tiles1設置有頭,菜單,內容像這樣:Tiles1 - 傳球屬性把jsp部分

<definition name="Main" path="/WEB-INF/jsp/MainLayout.jsp"> 
    <put name="header" value="/WEB-INF/jsp/Header.jsp"/> 
    <put name="menu" value="/WEB-INF/jsp/Menu.jsp"/> 
    <put name="content" value=""/> 
</definition> 

我所有的子頁面擴展這一定義,並提供對內容部分一個jsp:

<definition name="SearchPage" extends="Main"> 
    <put name="content" value="/WEB-INF/jsp/Search.jsp"/> 
</definition> 

我所尋找的是上面的SearchPage定義的方式「放」的屬性,以便它可以在search.jsp的使用。我的第一個嘗試是:

<definition name="SearchPage" extends="Main"> 
    <put name="content" value="/WEB-INF/jsp/Search.jsp"/> 
    <put name="showOptions" value="true" type="string"/> 
</definition> 

但在這種情況下,showOptions屬性將只提供給MainLayout.jsp,不會向下傳給search.jsp的。我知道有一些方法可以通過佈局頁面中的useAttribute將其明確地傳遞給它,但我非常想避免佈局頁面需要知道我可能在子頁面中使用的每個變量。

N.B.在tiles2中,似乎有一個漂亮的cascade =「true」屬性,它完全符合我正在尋找的內容,但不幸的是我認爲我與tiles1卡住了。


尼斯單行修復由於GriffeyDog:

在MainLayout.jsp導入所有的瓷磚屬性到請求範圍。然後它們可用於所有的子頁面(注意名稱衝突)。

<tiles:importAttribute scope="request"/> 

我還發現一種使用定義與必要的屬性作爲內容,而不是一個jsp頁的另一種方法:http://wiki.apache.org/struts/StrutsDocTiles(溶液#1)

回答

1

可以使用tiles:importAttribute並指定一個範圍,例如如request。在主佈局中執行此操作,然後您應該可以在搜索頁面中訪問它。

+0

很好,這工作。我會用修復程序更新原件。謝謝! – 2012-04-11 15:29:25