1. SiteMesh是一个Web页面布局修饰框架, 用于构建包含大量页面, 需要一致的外观样式(look/fell), 导航和布局机制的大型网站.
SiteMesh应用Decorator模式,用filter截取request和response,把页面组件head,content,banner结合为一个完整的视图。通常我们都是用include标签在每个jsp页面中来不断的包含各种header, stylesheet, scripts and footer,现在,在SiteMesh的帮助下,我们可以开心的删掉他们了。在WebWork中集成SiteMesh相当容易: 实际上什么也不用做. WebWork把全部值栈数据都保存在请求attribute中, 这意味着如果想显示值栈(或ActionContext)中的数据, 只需使用WebWork附带的标准标签库, 就这么简单!内含学习文档和完整例子。
2. 更改WEB-INF/web.xml的内容,如在xml的配置文件中不直接支持“<teglib></teglib>”的标签对,要把所有的标签对放到<jsp-config></jsp-config>中
3。SiteMesh使用下面的逻辑来选择使用哪一个装饰器:
(a) 页面是否使用meta装饰器标签(meta decorator tag)特别指定了一个装饰器?
(b) 页面是否是一个框架集(是的话则不应用装饰器)?
(c) 页面是否使用了printable=true
参数(是的话则使用打印装饰器)
(d) 页面时候使用装饰器文件名特别指定了一个装饰器?
(e) 页面是否匹配 decorators.xml 文件里描述的样式?
4。Sitemesh的标签
Decorator Tags | Page Tags |
被用于建立装饰器页面. | 被用于从原始内容页面访问装饰器. |
<decorator:head /> |
(1) <decorator:getProperty property="..." [ default="..." ] [ writeEntireProperty="..." ]/> 标签
在标签处插入原始页面(被包装页面)的原有的标签的属性中的内容,还可以添加一个缺省值。
注意,writeEntireProperty="true"
会在插入内容前加入一个空格。
(2) <decorator:usePage id="..." />标签
象jsp页面中的<jsp:useBean>标签一样,可以使用被包装为一个Page对象的页面。 (懒的用)例:可用<decorator:usePage id="page" /> :<%=page.getTitle()%>
达到<decorator:title/>的访问结果。
应用包装器到指定的页面上,一般用于被包装页面中主动应用包装器。
5。中文问题
i. 在每一个jsp页里设置: <%@ page contentType="text/html; charset=gbk"%> 来告诉server你所要求的字符集。
ii. 在每个jsp页的head中定义:<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=gbk"> 来告诉浏览器你所用的字符集。