当前访问本站: hits

yjhmily

坚持走自己的路……
posts - 47, comments - 267, trackbacks - 0, articles - 4

struts中tiles框架的组合与继承

Posted on 2006-10-25 19:06 kangxm 阅读(1807) 评论(1)  编辑  收藏 所属分类: J2EE
这两天在给公司的新项目搭框架,在配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框架的组合和继承的简单应用,欢迎大家指点!

   














   

Feedback

# 难  回复  更多评论   

2007-05-11 22:41 by 徐世贤
英语是我的克星,我永远都考不及格

# re: struts中tiles框架的组合与继承  回复  更多评论   

2008-08-20 11:40 by 王毅
你好,我使用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仍然报错






标题  
姓名  
主页
验证码 *  
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2006-10-25 19:08 编辑过
 
 
相关链接:
网站导航: