当前访问本站: hits

yjhmily

坚持走自己的路……

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  100 Posts :: 8 Stories :: 353 Comments :: 0 Trackbacks
这两天在给公司的新项目搭框架,在配tiles框架的时候发现一个小问题:
    比如开发团队一共5人,每人10个页面,如果按照简单的tiles框架配置方法,每个<definition/>中都会产生很多重复的<put name="top" value="xxx.jsp"/>代码,导致tiles-defs.xml文件不段的膨胀.
    仔细想了想tiles框架的原理,如果tiles支持嵌套功能的话,虽然tiles-defs.xml文件中的<definition/>个数没办法减少,但
每个<definition/>中的<put/>是完全可以精简的.即需要改变哪个页面就只配置哪个页面;
    查了一下struts的文档,虽然没找到tiles框架的嵌套功能,却找到了组合和扩展(我喜欢叫它继承),同样能解决问题!

 
   下面我简单介绍一下它们各自的用法:(页面布局见下图)

tiles_layout.jpg

一,Tiles组件的模板

    这里我们需要设置两个layout模板,分别为parent_layout.jsp和child_layout.jsp
   
    parent_layout.jsp
    
<!--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!


以上是小弟对tiles框架的组合和继承的简单应用,欢迎大家指点!

   














   
posted on 2006-10-25 19:06 kangxm 阅读(3983) 评论(1)  编辑  收藏 所属分类: J2EE

Feedback

#  2007-05-11 22:41 徐世贤
英语是我的克星,我永远都考不及格
  回复  更多评论
  

# re: struts中tiles框架的组合与继承 2008-08-20 11:40 王毅
你好,我使用Tiles遇到个问题,帮我解决下:

我的test.jsp大致如下:
<html>
<head>
<title><tiles:getAsString name="title"/></title>
</head>
<body>
<tiles:insert definition="tile.login" flush="true" />
</body>
</html>
访问时报错:Error.tag getAsString


去掉<tiles:getAsString name="title"/>一切正常


在Struts-Config.xml中加入ForwardAction以.do形式访问test.jsp仍然报错



  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: