有段时间没有使用struts2了,上了官网发现已经更新到2.2.1版本,没有细看note,照着以前老的方式配置web.xml,发现装饰器sitemesh对freemarker不起作用,折腾了一整天。最后还是老老实实看官方的文档,发现以前书上推荐的配置已经过时。老的一般配置如下:
<filter>
<filter-name>ActionContextCleanUp</filter-name>
<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
</filter>
<filter>
<filter-name>sitemesh</filter-name>
<filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>
</filter>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
从struts2.1.3开始ActionContextCleanUp 和 FilterDispatcher过滤器,已经不建议使用了。将使用StrutsPrepareFilter
和StrutsExecuteFilter拦截器替代。正确的配置方式如下:
<filter>
<filter-name>struts-prepare</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter</filter-class>
</filter>
<filter>
<filter-name>sitemesh</filter-name>
<filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class>
</filter>
<filter>
<filter-name>struts-execute</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts-prepare</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>sitemesh</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>struts-execute</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>sitemesh-freemarker</servlet-name>
<servlet-class>org.apache.struts2.sitemesh.FreemarkerDecoratorServlet</servlet-class>
<init-param>
<param-name>default_encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>sitemesh-freemarker</servlet-name>
<url-pattern>*.ftl</url-pattern>
</servlet-mapping>
<listener>
<listener-class>org.apache.struts2.dispatcher.ng.listener.StrutsListener</listener-class>
</listener>
注意:
1. com.opensymphony.sitemesh.webapp.SiteMeshFilter这个过滤器是必需的,否则装饰不起作用
2. 为了支持FreeMaker或Velocity,必须添加org.apache.struts2.sitemesh.FreemarkerDecoratorServlet这个Servlet,官方原话:
写道
From 2.2+ the recommended way to use Freemarker with Sitemesh is through the org.apache.struts2.sitemesh.FreemarkerDecoratorServlet servlet
3. 而已从2.2.x开始,必须添加org.apache.struts2.dispatcher.ng.listener.StrutsListener这个监听器
写道
From 2.2+ the new com.opensymphony.sitemesh.webapp.SiteMeshFilter filter and Struts org.apache.struts2.dispatcher.ng.listener.StrutsListener context listener must be added to web.xml,
4. 这样sitemesh装饰器才能在freemarker模板中起作用。
分享到:
相关推荐
MyEclipse7.5+flex4+spring3.0.5+struts2.2.1+hibernate3.6.0+blazeds4.0.0.14931完美整合方案 内附所需jar包和源代码
Struts2.2.1 api, Struts2.2.1帮助文档, CHM格式文件
struts2.2.1源码,一边看源码一边看书,效果更好
struts2-sitemesh-plugin-2.2.1.1.jarstruts2
struts2.2.1开发文档,是docs形式的开发文档
struts2.2.1开发包,是web开发必备工具。
Struts2.2.1+Spring3.1.0.M2+Hibernate3.5.1整合配置源码,在源码中简单地实现了查询、新增、删除操作。
Spring 3.0+Hibernate 3.6+Struts2.2.1详解 Spring 3.0+Hibernate 3.6+Struts2.2.1详解
欢迎大家下载,struts2.2.1 API chm格式
struts2.2.1,xwork源码,一边看源码,一边看书,效果更好
struts_2.2.1_src.zip struts 2.2.1 源码 src
struts2.2.1帮助文档,chm格式,让您在学习struts时边学边查阅,方便快捷
struts2.2.1apps struts 2.2.1 apps 示例应用
ssh(struts2.2.1+_hibernate3.6+spring3.0.5)整合配置,比较新的一个文档,可以参考。
说明:Struts2天生成Spring整合的,所在“整容”之后,Struts2的使用看上去比较简单;它与客户端的Ajax框架的整合也非常容易;本示例整合了jQuery 1.4版本框架,同时也使用dojo框架来完成struts2的属性页标签。 使用...
struts2.2.1 + hibernate3.6 +spring3.0.4 整合例子
SSH整合jar包--spring4.1.5 hibernate4.3.1 struts2.2.1
struts2-sitemesh-plugin-2.1.8.1.jar
整合struts2.2.1+spring3.0.4+hibernate3.6选择jar包. 不需要的包不要,这样可以使工程不会很庞大。
包含所有struts2.2.1jar 最近版本的jar 从官网上下来的