這兩天在給公司的新項目搭框架,在配tiles框架的時候發(fā)現(xiàn)一個小問題:
比如開發(fā)團隊一共5人,每人10個頁面,如果按照簡單的tiles框架配置方法,每個<definition/>中都會產(chǎn)生很多重復(fù)的<put name="top" value="xxx.jsp"/>代碼,導(dǎo)致tiles-defs.xml文件不段的膨脹.
仔細(xì)想了想tiles框架的原理,如果tiles支持嵌套功能的話,雖然tiles-defs.xml文件中的<definition/>個數(shù)沒辦法減少,但
每個<definition/>中的<put/>是完全可以精簡的.
即需要改變哪個頁面就只配置哪個頁面;
查了一下struts的文檔,雖然沒找到tiles框架的嵌套功能,卻找到了組合和擴展(我喜歡叫它繼承),同樣能解決問題!
下面我簡單介紹一下它們各自的用法:(頁面布局見下圖)
一,Tiles組件的模板
這里我們需要設(shè)置兩個layout模板,分別為parent_layout.jsp和child_layout.jsp
parent_layout.jsp
<!--child_layout.jsp -->
<body>
<div>
<!--右邊主內(nèi)容的tab區(qū)域-->
<tiles:insert attribute="tab" />
<!--右邊主內(nèi)容的content區(qū)域-->
<tiles:insert attribute="content" />
</div>
</body><!--parent_layout.jsp-->
<body>
<div>
<!--頂部菜單區(qū)域-->
<tiles:insert attribute="top" />
<!--左邊豎導(dǎo)航-->
<tiles:insert attribute="left" />
<!--右邊主內(nèi)容區(qū)域-->
<tiles:insert attribute="child" />
<!--底步區(qū)域-->
<tiles:insert attribute="foot" />
</div>
</body>
child_layout.jsp
<!--child_layout.jsp-->
<body>
<div>
<!--右邊主內(nèi)容的tab區(qū)域-->
<tiles:insert attribute="tab" />
<!--右邊主內(nèi)容的content區(qū)域-->
<tiles:insert attribute="content" />
</div>
</body>
二,Tiles組件的組合
根據(jù)以上模板的定義,在tiles-defs.xml文件中就可以這樣寫來實現(xiàn)Tiles的組合了:
// 父級tiles模板配置
<definition name="parent"path="/parent_layout.jsp">
<put name="top" value="/top.jsp" />
<put name="left" value="/left.jsp" />
<put name="child" value="child" type="definition"/>
<put name="foot" value="/foot.jsp" />
</definition>
// 子級tiles配置
<definition name="child"path="/child_layout.jsp">
<put name="tab" value="/tab.jsp" />
<put name="content" value="/content.jsp" />
</definition>
三,Tiles組件的擴展(繼承)
這里需要對以上的parent_layout模板做一些修改,并且不需要使用child_layout
修改后的parent_layout.jsp <!--parent_layout.jsp-->
<body>
<div>
<!--頂部區(qū)域-->
<tiles:insert attribute="top" />
<!--左邊豎導(dǎo)航-->
<tiles:insert attribute="left" />
<!--右邊主內(nèi)容區(qū)域-->
<tiles:insert attribute="tab" />
<tiles:insert attribute="content" />
<!--底部區(qū)域-->
<tiles:insert attribute="foot" />
</div>
</body>
改完模板文件,下來該進行tiles的配置了;
// 父級tiles模板配置
<definition name="parent" path="/parent_layout.jsp">
<put name="top" value="/top.jsp" />
<put name="left" value="/left.jsp" />
<put name="tab" value="/tab.jsp" />
<put name="content" value="" />
<put name="foot" value="/foot.jsp" />
</definition>
// 子級tiles模板配置
<definition name="child" extends="parent">
<put name="content" value="/content.jsp" />
</definition>
如上所示,大家在開發(fā)中,每個頁面只需要配置子級tiles的content.jsp就ok!
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點擊舉報。