这两天在给公司的新项目搭框架,在配tiles框架的时候发现一个小问题: 比如开发团队一共5人,每人10个页面,如果按照简单的tiles框架配置方法,每个<definition/>中都会产生很多重复的<put name="top" value="xxx.jsp"/>代码,导致tiles-defs.xml文件不段的膨胀. 仔细想了想tiles框架的原理,如果tiles支持嵌套功能的话,虽然tiles-defs.xml文件中的<definition/>个数没办法减少,但 每个<definition/>中的<put/>是完全可以精简的.即需要改变哪个页面就只配置哪个页面; 查了一下struts的文档,虽然没找到tiles框架的嵌套功能,却找到了组合和扩展(我喜欢叫它继承),同样能解决问题! ![]() 这里我们需要设置两个layout模板,分别为parent_layout.jsp和child_layout.jsp parent_layout.jsp <!--child_layout.jsp --> <body> <div> <!--右边主内容的tab区域--> <tiles:insert attribute="tab" /> <!--右边主内容的content区域--> <tiles:insert attribute="content" /> </div> </body><!--parent_layout.jsp--> <body> <div> <!--顶部菜单区域--> <tiles:insert attribute="top" /> <!--左边竖导航--> <tiles:insert attribute="left" /> <!--右边主内容区域--> <tiles:insert attribute="child" /> <!--底步区域--> <tiles:insert attribute="foot" /> </div> </body> child_layout.jsp <!--child_layout.jsp-->
<body> <div> <!--右边主内容的tab区域--> <tiles:insert attribute="tab" /> <!--右边主内容的content区域--> <tiles:insert attribute="content" /> </div> </body> 二,Tiles组件的组合 根据以上模板的定义,在tiles-defs.xml文件中就可以这样写来实现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> <!--顶部区域--> <tiles:insert attribute="top" /> <!--左边竖导航--> <tiles:insert attribute="left" /> <!--右边主内容区域--> <tiles:insert attribute="tab" /> <tiles:insert attribute="content" /> <!--底部区域--> <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> 如上所示,大家在开发中,每个页面只需要配置子级tiles的content.jsp就ok! |
|