1. <#if Parameters.myParameter?exists>
2. ${Parameters.myParameter}
3. if>
sitemesh velocity:
http://www.opensymphony.com/sitemesh/velocity-decorators.html
sitemesh freemarker:
http://www.opensymphony.com/sitemesh/freemarker-decorators.html
Struts 2.0提供一个Sitemesh插件,允许在Sitemesh模板中使用Struts标记。
要使用Sitemesh需要包含Freemark,Sitemesh和Sitemesh插件库文件。
配置过滤器
如果需要使用Freemark模板文件作为装饰器文件,需要在web.xml文件中添加如下配置:
xml 代码
1. <filter>
2. <filter-name>struts-cleanupfilter-name>
3. <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUpfilter-class>
4. filter>
5. <filter>
6. <filter-name>sitemeshfilter-name>
7. <filter-class>org.apache.struts2.sitemesh.FreeMarkerPageFilterfilter-class>
8. filter>
9. <filter>
10. <filter-name>strutsfilter-name>
11. <filter-class>org.apache.struts2.dispatcher.FilterDispatcherfilter-class>
12. filter>
13.
14. <filter-mapping>
15. <filter-name>struts-cleanupfilter-name>
16. <url-pattern>/*url-pattern>
17. filter-mapping>
18. <filter-mapping>
19. <filter-name>sitemeshfilter-name>
20. <url-pattern>/*url-pattern>
21. filter-mapping>
22. <filter-mapping>
23. <filter-name>strutsfilter-name>
24. <url-pattern>/*url-pattern>
25. filter-mapping>
注意ActionContextCleanUp过滤器必须在FilterDispatcher之前配置,ActionContextCleanUp的主要
功能是通知FilterDispatcher执行完毕不要清除ActionContext,以便sitemesh装饰器可以访问Struts值堆栈。
在WEB-INF目录下创建一个decorator.xml文件,指定装饰器需要匹配哪些文件,下述示例指定main.flt将装饰所有的jsp文件:
xml 代码:
1. <!--sp-->xml version="1.0" encoding="ISO-8859-1"?>
2.
3. <decorators defaultdir="/decorators">
4. <!-- Any urls that are excluded will never be decorated by Sitemesh -->
5. <excludes>
6. <pattern>/exclude.jsppattern>
7. <pattern>/exclude/*pattern>
8. excludes>
9.
10. <decorator name="main" page="main.ftl">
11. <pattern>/*.jsppattern>
12. decorator>
13. decorators>
如果需要自定义装饰器映射器,需要在WEB-INF目录下创建一个sitemesh.xml文件(通常从发布包中拷贝过来更改相应部分)。这一步骤是可选 的,通常缺省的配置就能够满足要求。
定义装饰器文件
缺省情况下,sitemesh假定装饰器文件保存在应用上下文根路径下的decorators目录下,如果采用如上配置,装饰器文件应该是ftl格式,如 果需要使用其他格式,需要更改过滤器配置。
访问被装饰页面
在Freemark装饰器文件中,可以通过如下变量访问被装饰页面的相关部分:
xml 代码:
1. ${title}......访问被装饰页面的标题。
2.
3. ${head}......访问被装饰页面的头信息,标题除外。
4.
5. ${body}......访问被装饰页面的body内容。
6.
7. ${page.properties.meta.author}......访问被装饰页面的属性。
内部变量
Freemark和Struts整合提供如下内部变量:
xml 代码:
1. stack......值堆栈本身,示例${stack.findString('ognl expr')}
2.
3. action......Action实例
4.
5. response/res......响应对象
6.
7. request/req......请求对象
8.
9. session......会话对象
10.
11. application......ServletContext
12.
13. base......请求的上下文路径
下面介绍访问应用程序各范围属性的语法示例:
Application范围
假定Application范围有一个属性 myApplicationAttribute
:
java 代码:
1. <#if Application.myApplicationAttribute?exists>
2. ${Application.myApplicationAttribute}
3. if>
or
1. <@s.property value="%{#application.myApplicationAttribute}" />
Session范围
假定会话范围内有一个属性mySessionAttribute:
java 代码:
1. <#if Session.mySessionAttribute?exists>
2. ${Session.mySessionAttribute}
3. if>
或
java 代码:
<@s.property value="%{#session.mySessionAttribute}" />
Request范围
假定请求范围有一个属性myRequestAttribute
java 代码:
1. <#if Request.myRequestAttribute?exists>
2. ${Request.myRequestAttribute}
3. if>
或
java 代码
Request参数
假定请求参数myParameter:
1. <#if Parameters.myParameter?exists>
2. ${Parameters.myParameter}
3. if>
or
java 代码:
1. <@s.property value="%{#parameters.myParameter}" />
Context参数
假定框架上下文有一参数myContextParam:
${stack.findValue('#myContextParam')}
or
java 代码:
1. <@s.property value="%{#parameters.myParameter}" />
Context参数
假定框架上下文有一参数myContextParam:
${stack.findValue('#myContextParam')}
or
java 代码:
1. <@s.property value="%{#myContextParam}" />
分享到:
相关推荐
在Struts2与Sitemesh的整合中,我们通常会在Struts2的配置文件中添加Sitemesh的拦截器,这样,每次Struts2处理完Action返回的结果后,Sitemesh会自动对结果页面进行装饰。这样不仅简化了开发者的工作,也让网站的...
struts2-portlet-plugin-2.5.10.jar,struts2-rest-plugin-2.5.10.jar,struts2-sitegraph-plugin-2.5.10.jar,struts2-sitemesh-plugin-2.5.10.jar,struts2-spring-plugin-2.5.10.jar,struts2-testng-plugin-2.5.10....
第四章可能涉及Struts2的视图技术,如JSP标签库的使用,以及如何与FreeMarker、Velocity等模板引擎集成,以创建动态HTML页面。第五章可能涵盖Struts2的模型部分,包括数据持久化、DAO设计模式以及与ORM框架(如...
4. **模板技术**:Struts2支持多种视图模板技术,如JSP、FreeMarker、Velocity等,方便开发者选择最适合项目需求的模板引擎。 5. **插件体系**:Struts2拥有丰富的插件库,如Tiles、JSON、Ajax等,可以方便地扩展...
Struts2讲义 作者:吴峻申 目录 第1章 Struts过时了吗? 10 1.1 Struts历史发展过程 10 1.2 Struts2的“简历” 13 1.2.1 标签库介绍 13 1.2.2 拦截器应用目的 14 1.2.3 FilterDispatcher和Action概述 14 1.2.4 ...
第1章 Struts 2:现代Web框架 2 1.1 Web应用程序:快速学习 2 1.1.1 构建Web应用程序 2 1.1.2 基础技术简介 3 1.1.3 深入研究 6 1.2 Web应用程序框架 7 1.2.1 什么是框架 7 1.2.2 为什么使用框架 8 1.3 Struts 2框架...
Struts2拥有一个活跃的开发者社区,支持Annotation和XML配置,提供与Spring、SiteMesh和Tiles的集成,以及与OGNL(Object-Graph Navigation Language)表达式语言的融合。此外,它还包含基于主题的标签库和Ajax支持...
Struts2具有强大的拦截器机制,可以实现如登录检查、权限控制等功能,并支持多种结果类型,如JSP、FreeMarker、Velocity等。 2. Spring:Spring是一个全面的后端应用框架,提供了依赖注入(DI)和面向切面编程(AOP...
此外,Struts2还提供了主题、Ajax标签和多种视图选项,如JSP、Freemarker、Velocity和XSLT,以及通过插件进行扩展的机制。 与Struts1相比,Struts2在Action类的设计上有显著不同。Struts1的Action需要继承抽象基类...
6. **集成性**:Struts2可以与Spring、SiteMesh和Tiles等其他框架无缝集成,提高开发效率。 7. **OGNL集成**:OGNL(Object-Graph Navigation Language)是Struts2中的默认表达式语言,提供了强大的数据访问和操作...
struts2-sitemesh-plugin-2.5.2.jar, struts2-spring-plugin-2.5.2.jar, struts2-testng-plugin-2.5.2.jar, struts2-tiles-plugin-2.5.2.jar, tiles-api-3.0.5.jar, tiles-autotag-core-runtime-1.1.0.jar, tiles-...
struts2-sitemesh-plugin-2.3.30.jar, struts2-spring-plugin-2.3.30.jar, struts2-struts1-plugin-2.3.30.jar, struts2-testng-plugin-2.3.30.jar, struts2-tiles-plugin-2.3.30.jar, struts2-tiles3-plugin-2.3.30...
4. **与第三方框架的集成**:Struts2可以与Spring、SiteMesh和Tiles等框架无缝集成,增强了应用程序的功能和可扩展性。 5. **OGNL集成**:使用OGNL(Object-Graph Navigation Language)作为表达式语言,提高了数据...
与FreeMarker、Velocity等模板引擎相比,Sitemesh更专注于页面布局和装饰,而不仅仅是内容渲染。同时,与Spring Boot中的Thymeleaf相比,Sitemesh的配置和使用相对简单,但在某些复杂场景下可能不如Thymeleaf灵活。 ...
继续探索 SiteMesh 的高级特性,如自定义 Decorator 选择策略、使用 Freemarker 或 Velocity 作为模板引擎,以及与其他 MVC 框架(如 Struts 或 Spring MVC)的集成,将进一步提升你的 Web 开发技能。记住,实践是...
同时,它也可以与FreeMarker、Velocity等模板引擎配合使用。 10. **升级与迁移**: 从旧版本升级到2.4.1或2.4.2时,需要注意兼容性问题,确保所有装饰器和配置文件与新版本兼容。同时,查看官方文档中的变更日志,...
此外,Freemarker可以与Spring MVC、Sitemesh、Struts等框架集成,具体的集成代码可参考相关工程附件。 Freemarker的常用指令和语法包括: 1. 输出内容:使用`${…}`表示插值,Freemarker会替换花括号内的表达式并...