坚持走自己的路……
一、SiteMesh项目简介
注意过滤器的位置:应该在struts2的org.apache.struts2.dispatcher.FilterDispatcher过滤器之前org.apache.struts2.dispatcher.ActionContextCleanUp过滤器之后,否则会有问题; 4、在下载的SiteMesh包中找到sitemesh.xml,(\sitemesh-2.3\src\example-webapp\WEB-INF目录下就有)
将其拷贝到/WEB-INF目录下; 5、在sitemesh.xml文件中有一个property结点(如下),该结点指定了decorators.xml在工程中的位置,让sitemesh.xml能找到他;按照此路径新建decorators.xml文件,当然这个路径你可以任意改变,只要property结点的value值与其匹配就行;
6、在WebRoot目录下新建decorators目录,并在该目录下新建一个模板jsp,根据具体项目风格编辑该模板,如下示例:我的模板:main.jsp
这就是个简单的模板,页面的头和脚都由模板里的静态HTML决定了,主页面区域用的是<decorator:body />标签;也就是说凡是能进入过滤器的请求生成的页面都会默认加上模板上的头和脚,然后页面自身的内容将自动放到<decorator:body />标签所在位置;<decorator:title default="Welcome to test sitemesh!" />:读取被装饰页面的标题,并给出了默认标题。<decorator:head />:读取被装饰页面的<head>中的内容;<decorator:body />:读取被装饰页面的<body>中的内容; 7、说到这里大家就要想了,那如果某个特殊的需求请求路径在过滤器的范围内,但又不想使用模板怎么办?你总不能这么不讲道理吧! 大家放心吧,SiteMesh早就考虑到这一点了,上面第5步说道的decorators.xml这个时候就起到作用了! 下面是我的decorators.xml:
decorators.xml有两个主要的结点: decorator结点指定了模板的位置和文件名,通过pattern来指定哪些路径引用哪个模板 excludes结点则指定了哪些路径的请求不使用任何模板如上面代码,/index.jsp和凡是以/login/开头的请求路径一律不使用模板;另外还有一点要注意的是:decorators结点的defaultdir属性指定了模板文件存放的目录;六、实战感受 刚刚做完一个用到sitemesh的项目,跟以前用tiles框架相比,最大的感受就是简单,系统设计阶段就把模板文件和sitemesh框架搭好了!哪些页面使用框架哪些不使用,全部都通过UI Demo很快就定义出来了;在接下来的开发中所有成员几乎感受不到sitemesh的存在,各自仅仅关心自己的模块功能实现;
Copyright @ kangxm Powered by: .Text and ASP.NET Theme by: .NET Monster