- 论坛徽章:
- 0
|
一个web 项目常常包含很多页面,各页面常常只是内容不同。如果每个页面都是独立的,显然维护起来非常麻烦。JSP 提供了 可以将在 JSP 文件中包括其它 JSP 文件片断。但是每个特定的 JSP 页面都需要用 来插入相应的模板,这也是件麻烦的事。
Struts 1 内置了 Tiles 支持,Tiles 能够有效的组织页面。现在 Tiles 已经 Apache 上一个一级项目,称为Tiles 2 ,相应的 Struts 1 中的 Tiles 就是 Tiles 1。
另外一种页面布局工具是 Sitemesh ,原理上与 Tiles 有很大差别,Sitemesh 对开发人员和设计人员更加友好,特定页面依然可以使用完整的 HTML 标签,即可以包含 head,body等标签,运行时才与模板文件进行重新组合。
Stripes 内置了一套简单的方案,与 Tiles 有些类似,但要简单很多,它只含三个相应的标签。
定义了一套可复用的页面模板。
定义了一个模板页面的组件
按模板生成页面
下面我们通过示例来说明使用。
示例
这里重新改造最初的 helloworld 程序。首先创建模板文件,新建/layouts 目录,创建一个 JSP 文件,名为 default.jsp。这里假设把一个页面分为三部分,header,content,和 footer,实际应用中应该复杂得多。一般经常变化的就是内容,即content。
Stripes Layout Examples
我们将header,footer 部分独立成一个单独文件,便于管理。这个layout模板定义了三个组件,即header, content, footer。
/layouts/header.jsp,/layouts/footer.jsp是普通的 JSP 文件片断。
Say Hello to Stripes!
Powered by Stripes.
layout模板页面已经定义好了,现在看看如何应用。
运行程序进行测试。
向layout模板文件传递参数
现在所的页面标题都是一样的,所有的窗口标题也是不变的。如何让标题动态的显示呢?
修改 layout 文件。
Stripes Layout Examples:${pageTitle}
${pageTitle}
这里打算从外部传一个 pageTitle 进来,用 EL 表示。
pageTitle 作为 的一个属性。
另外参数也可以定义为 layout-component, 其属性 name为要传递的参数名。
Welcome back, ${user.username}
Welcome, Guest!
创建一个 UserSession类,它提供用户检测功能,但只是一个伪类,这里仅仅只是为了演示。
嵌套使用
这三个标签的使用非常灵活。
footer.jsp 现在是一个 layout-definition。
Powered by Stripes.
运行测试项目。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/1096/showart_1883059.html |
|