讓Seasar支持TilesPlugin

如果你將要繼續深入的看這篇文章,我將假設你已經對Seasar以及Tiles有了一定的瞭解。
如果不是,我建議你先看看去了解一下他們的相關技術再來。


下面我們開始。
我們要求的並不僅僅是支持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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章