這兩天在給公司的新項目搭框架,在配tiles框架的時候發(fā)現(xiàn)一個小問題: 比如開發(fā)團隊一共5人,每人10個頁面,如果按照簡單的tiles框架配置方法,每個<definition/>中都會產(chǎn)生很多重復(fù)的<put name="top" value="xxx.jsp"/>代碼,導(dǎo)致tiles-defs.xml文件不段的膨脹. 仔細想了想tiles框架的原理,如果tiles支持嵌套功能的話,雖然tiles-defs.xml文件中的<definition/>個數(shù)沒辦法減少,但 每個<definition/>中的<put/>是完全可以精簡的.即需要改變哪個頁面就只配置哪個頁面; 查了一下struts的文檔,雖然沒找到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! |
|