2014-01-13 17 views
0

定義圖塊定義或屬性時,是否可以引用另一個定義或屬性而不繼承?在Tiles 2中,有沒有辦法引用另一個定義或屬性而不直接繼承?

我有各種各樣的被認爲是「常見」的JSP片段,CSS和JavaScript。它們當然不是每個頁面都需要的,因此直接繼承似乎不會起作用。

例子:

<tiles-definitions> 
    <definition name="currentBodyDefinition" template="[...specific body template...]" extends="Components"> 
     <!-- if it's not already defined within Components, add it here --> 
    </definition> 

    <definition name="page" extends="pageTemplate"> 
     <put-attribute name="body" value="currentBodyDefinition" /> 
     <put-attribute name="scripts" value="[...???...]" /> <!-- can I reference another definition(s) or attribute(s) here??? --> 
     <put-attribute name="styles" value="[...???...]" /> <!-- can I reference another definition(s) or attribute(s) here??? --> 

    </definition> 
</tiles-definitions> 

回答

0

我認爲你可以做這樣的事情:

<definition name="layout" page="/WEB-INF/tiles/layouts/layout.jsp"> 
     <put name="title" type="string" value="${title}"/> 
     <put name="header" type="definition" value="${header}"/> 
     <put name="content" type="definition" value="${content}"/> 
    </definition> 

    <definition name="headerDef" page="/WEB-INF/tiles/header.jsp"> 
     <put name="headerText" type="string" value="Header String"/> 
    </definition> 

    <definition name="contentDef" page="/WEB-INF/tiles/layouts/contentPage.jsp"> 
     <put name="searchPanel" type="definition" value="panelDef"/> 
     <put name="somePage" type="page" value="/WEB-INF/tiles/somePage.jsp"/> 
    </definition> 

    <definition name="page" extends="layout"> 
     <put name="title" value="Some Title String"/> 
     <put name="header" value="headerDef"/> 
     <put name="content" value="contentDef"/> 
    </definition> 
相關問題