生活随笔
收集整理的這篇文章主要介紹了
struts2.2.1关于sitemesh和freemarker整合的细节
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
http://nighty.iteye.com/blog/788241
有段時間沒有使用struts2了,上了官網發現已經更新到2.2.1版本,沒有細看note,照著以前老的方式配置web.xml,發現裝飾器sitemesh對freemarker不起作用,折騰了一整天。最后還是老老實實看官方的文檔,發現以前書上推薦的配置已經過時。老的一般配置如下:
Xml代碼??
< 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攔截器替代。正確的配置方式如下:
Xml代碼??
< 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模板中起作用。
總結
以上是生活随笔 為你收集整理的struts2.2.1关于sitemesh和freemarker整合的细节 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。