如果不是,我建議你先看看去了解一下他們的相關技術再來。
下面我們開始。
我們要求的並不僅僅是支持TilesTagLib,而是要Seasar支持TilesPlugin。
但是很可惜,Seasar作爲一個比較完善的Web框架,卻沒有提供對TilesPlugin的支持。先來發現問題的根源。通過讀源代碼我們可以發現,Seasar的S2RequestProcessor是繼承自[org.apache.struts.action.RequestProcessor]的,而Tiles的TilesRequestProcessor也是繼承自[org.apache.struts.action.RequestProcessor]的,也就是說你要麼用Seasar(沒有Tiles),要麼用其他的Web框架,不用Seasar。可是,我們偏偏什麼都想要,誰叫我們貪心呢!
問題已經提出,其實要解決這個問題也很簡單,我們爲什麼不自作一個ResutstProcessor,讓他既有S2RequestProcessor的功能,又有TilesRequestProcessor的功能呢?
請按照下面一步步做:
1.下載到S2RequestProcessor的源碼。你可以去Seasar的官方網站
2.下載到TilesRequestProcessor的源碼。你可以去Apache的官方網站
3.創建一個名叫S2TilesResutstProcessor的類,讓他繼承TilesRequestProcessor,然後我們把S2RequestProcessor裏的所有代碼都複製進S2TilesResutstProcessor,接着我們把TilesRequestProcessor中的processForwardConfig和processTilesDefinition兩個函數也複製進S2TilesResutstProcessor,並保證他們能編譯通過。
OK,完成上面三步,他就是名副其實的S2TilesResutstProcessor了。
把他引入你的struts-config.xml吧
<controller
maxFileSize="1024K"
bufferSize="1024"
processorClass="你的
S2TilesResutstProcessor類 "
multipartClass="org.seasar.struts.upload.S2MultipartRequestH"/>
接着再導入TilesPlugin
<plug-in className="org.apache.struts.tiles.TilesPlugin">
<set-property
property="definitions-config"
value="/WEB-INF/conf/struts/tiles/tiles-defs-xxx.xml
value="/WEB-INF/conf/struts/tiles/tiles-defs-yyy.xml />
<set-property
property="moduleAware"
value="true"/>
</plug-in>
試試看吧。
希望這篇文章能夠幫助到必須用Seasar,又必須用TilesPlugin的各位朋友。
如果要轉載,請註明出處(http://blog.sina.com.cn/u/2198971017)