配置了sitemesh后用struts2标签就报错,用ognl El标签却不报错。
原因:sitemesh的过滤器 com.opensymphony.sitemesh.webapp.SiteMeshFilter 应该在
struts2的过滤器 org.apache.struts2.dispatcher.FilterDispatch
(或org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter)之前,在
org.apache.struts2.dispatcher.ActionContextCleanUp过滤器之后
而且ActionContextCleanUp、FilterDispatch(或StrutsPrepareAndExecuteFilter)这两个struts2的过滤器必须得配置
ActionContextCleanUp:延长action中属性的生命周期,包括自定义属性,以便在jsp页面中进行访问,让actionContextcleanup过滤器来清除属性,不让action自己清除。
为了使用WebWork,我们只需要在web.xml配置FilterDispatcher一个过滤器即可,阅读一下FilterDispatcher的 JavaDoc和源码,我们可以看到它调用了:
finally{
ActionContextCleanUp.cleanUp(req);
}
在ActionContextCleanUp中,有这样的代码:
req.setAttribute(CLEANUP_PRESENT, Boolean.TRUE);
如果FilterDispatcher检测到这个属性,就不会清除ActionContext中的内容了,而由 ActionContextCleanUp后续的代码来清除,保证了一系列的Filter访问正确的ActionContext.
如果用到SiteMesh的Filter或者其他类似Filter,那么设置顺序是:
ActionContextCleanUp filter
SiteMesh filter
FilterDispatcher
分享到:
相关推荐
安装此插件后,开发者可以在Struts2的Action配置中指定一个模板,这个模板将被Sitemesh自动装饰。 **配置Struts2 Sitemesh插件** 1. 将`struts2-sitemesh-plugin-2.2.1.1.jar`添加到项目的类路径中。 2. 在`struts....
特别注意的是,`struts-cleanup`过滤器必须在`FilterDispatcher`之前配置,以确保Struts2处理完请求后不会立即清除`ActionContext`。 #### 配置装饰器 在`WEB-INF`目录下创建一个`decorator.xml`文件,用以指定...
2. **配置Struts2**:在struts.xml配置文件中,添加SiteMesh插件的配置,使Struts2知道需要使用SiteMesh进行页面装饰: ```xml <constant name="struts.action.excludePattern" value="/decorator.*"/> ...
`helloWorld`可能是这个应用的一个入口点,例如,它可能对应一个Struts2的动作类,该类在接收到请求后,通过Spring2.5的依赖注入获取服务,执行相应操作,然后返回一个视图,这个视图将通过SiteMesh进行装饰和布局。...
5. **运行与测试**:完成上述步骤后,重启应用服务器,SiteMesh 就会开始拦截所有请求,并根据配置和标记对页面进行装饰。你可以通过浏览器访问页面,查看装饰效果是否符合预期。 总的来说,SiteMesh 开发 Struts ...
2. 配置Struts2的struts-default.xml,启用Sitemesh拦截器,如`<interceptor-ref name="decorator"/>`。 3. 创建一个装饰器配置文件,如WEB-INF/decorators.xml,定义哪些页面使用哪种装饰器。 4. 在Action类或结果...
【标题】"个人测试用报表项目(sitemesh+struts2+birt)"涉及到的主要技术栈是Sitemesh、Struts2和BIRT,这是一个经典的Java Web开发组合,用于构建动态、数据丰富的报表系统。 Sitemesh是Java的一个开源页面布局...
struts2-sitemesh-plugin-2.1.6.jar
3. **配置struts2-sitemesh-plugin**:在Struts2的配置文件(struts.xml)中启用Sitemesh插件。这将告诉Struts2如何与Sitemesh协作。 ```xml <constant name="struts.plugins" value=...
struts2-sitemesh-plugin-2.0.8.jar
5. 使用Sitemesh定义全局布局模板,并在Struts2配置中指定装饰器。 6. 编写业务逻辑,通过Struts2调用Spring管理的Service,由Service调用Hibernate管理的DAO,完成数据操作。 7. 运行项目,观察Sitemesh装饰效果...
4. **整合与配置**:在源码中,你会看到`struts-plugin.xml`文件,这是Struts2的插件配置,用于集成Sitemesh。同时,Sitemesh的配置文件(通常为`sitemesh.properties`)也会影响装饰效果,例如设置哪些URL应该被...
OGNL标签是Struts2标签库中的一个重要组成部分,它们允许开发者在JSP页面中直接使用OGNL表达式进行数据访问和处理。 ##### 5.3 功能性标签详解 除了OGNL标签外,Struts2还提供了许多功能性标签,如append、...
3.1 使用web.xml配置Struts2实现Web项目Struts2应用 37 3.2 使用配置文件struts.xml实现页面导航定义 38 3.3 使用Action类控制导航业务数据 40 3.4 使用ActionSupport进行校验 42 第4章 另一Struts2核心技术:拦截器...
3. **Struts2配置**:在Struts2的配置文件中指定Sitemesh作为结果类型。 4. **创建装饰模板**:定义一个基础模板(例如default.vm),包含公共部分如头部、尾部。 5. **页面集成**:在具体的JSP页面中,通过特定的...
8. `struts2-sitemesh-plugin-2.0.11.jar`:整合Sitemesh进行页面布局和装饰。 Spring框架的核心组件主要是`spring.jar`,它提供: 1. 依赖注入(DI)和控制反转(IoC):使得对象间的依赖关系可以在运行时自动管理...
### Sitemesh 3 的使用及配置 #### 一、Sitemesh 3 简介 Sitemesh 是一个非常实用的Web页面布局与修饰框架,它通过Servlet中的Filter来实现网页的装饰功能,类似于ASP.NET中的“母版页”技术。这种技术允许开发者...