<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    WebWork2.2新特性(八)使用FreeMarker的FTL做裝飾頁面

    其實我不善于寫作,有些東西僅僅是寫下來.還可以提醒自己.

    人生"入"夢,各位一定要保重身體.

     

    注意:FreeMarkerPageFilter是2.2beta發布后才加到CVS上的,所以從CVS獲取新的代碼才能看到這個filter,同目錄下還有一個VelocityPageFilter.

    FreeMarkerPageFilter以及VelocityPageFilter都是Sitemesh頁面裝飾器中PageFilter的擴展,有了它,可以直接使用FreeMarker的ftl作為裝飾頁面,可以不在使用SiteMesh帶的FreemarkerDecoratorServlet了,而且還可以享受Action中的ValueStack了.

    不過我不推薦在裝飾頁面中使用ValueStack中的值,因為裝飾頁面對應的Action是不確定的,而且也可能修飾的是一個普通頁面,不是一個Action.

    我們要有一個Action及其結果頁面,或者一個簡單的頁面,這些不在贅述,自己看自己的了.

    首先我們有一個裝飾頁面,示例如下(main.ftl):

     <html>
     <head>
         <title>JScud Develop:${page.title}</title>
         ${page.head}
     </head>
     <body>
     ${page.body}
     <br><br>
     From: ${base} by <@ww.text name="copyright"/>
     </body>
     </html> 


    我們可以看到,其中的標記都有page前綴,而不是直接使用body,title等,原因是這個FreeMarkerPageFilter只把page放到了FreeMarker的model中,如果你還是想遵循原來的習慣,那么自己繼承一下FreeMarkerPageFilter即可,非常簡單,然后把body,title,head放到model中即可.不過我覺得現在也挺好,省得變量太短和別的混淆.

    SiteMesh的decorators.xml示例如下:

     <?xml version="1.0" encoding="ISO-8859-1"?>
     <decorators defaultdir="/decorators">
         <decorator name="main" page="main.ftl">
             <pattern>/*</pattern>
         </decorator>
     </decorators> 


    我們還需要在web.xml中配置過濾器,在這個地方,我走了彎路,因為沒有文檔,結果沒有注意到 ActionContextCleanUp 這個Filter,自己還自作聰明修改了一下FreeMarkerPageFilter,后來才發現ActionContextCleanUp這個Filter的作用,這都是沒有仔細看源碼(JavaDoc)的后果啊.

    在不使用SiteMesh的時候,為了使用WebWork,我們只需要在web.xml配置FilterDispatcher一個過濾器即可,閱讀一下FilterDispatcher的JavaDoc和源碼,我們可以看到它調用了:

     finally
     {
                ActionContextCleanUp.cleanUp(req);
     } 

    而且JavaDoc中也提到看ActionContextCleanUp的文檔,那我們就去看吧(我沒看所以...)

    在ActionContextCleanUp中,有這樣的代碼:

     req.setAttribute(CLEANUP_PRESENT, Boolean.TRUE); 

    如果FilterDispatcher檢測到這個屬性,就不會清除ActionContext中的內容了,而由ActionContextCleanUp后續的代碼來清楚,保證了一系列的Filter訪問正確的ActionContext.

    文檔中提到,如果用到SiteMesh的Filter或者其他類似Filter,那么設置順序是:

    •  ActionContextCleanUp filter
    •  SiteMesh filter
    •  FilterDispatcher

     所以最后我們的web.xml應該類似這樣:

        <filter>
            <filter-name>ActionContextCleanUp</filter-name>
            <filter-class>com.opensymphony.webwork.dispatcher.ActionContextCleanUp</filter-class>
        </filter>

        <filter>
            <filter-name>sitemesh</filter-name>
            <filter-class>com.opensymphony.webwork.sitemesh.FreeMarkerPageFilter</filter-class>
        </filter>

        <filter>
            <filter-name>webwork</filter-name>
            <filter-class>com.opensymphony.webwork.dispatcher.FilterDispatcher</filter-class>
        </filter>

        <filter-mapping>
            <filter-name>ActionContextCleanUp</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>

        <filter-mapping>
            <filter-name>sitemesh</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>

        <filter-mapping>
            <filter-name>webwork</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping> 


     
    發布程序,運行結果正常.在Action改變Locale,裝飾頁面也獲取了正確的Locale,OK,大功告成...嘿嘿

    BTW:如果你使用jsp做裝飾頁面,使用SiteMesh自己的PageFilter即可,不過也要配置ActionContextCleanUp哦. :)


    BTW 2:
     其實,我還想寫一篇AJAX的,不過總是懶得寫那...
     文件上傳的攔截器有些Bug,而且處理流程必須結合實際才行,所以也不想寫了...


    除經特別注明外,本文章版權歸JScud Develop團隊或其原作者所有.
    轉載請注明作者和來源.  scud(飛云小俠)  歡迎訪問 JScud Develop


    posted on 2005-09-07 16:06 Scud(飛云小俠) 閱讀(1414) 評論(0)  編輯  收藏 所屬分類: WEB

    <2005年9月>
    28293031123
    45678910
    11121314151617
    18192021222324
    2526272829301
    2345678

    導航

    統計

    公告

    文章發布許可
    創造共用協議:署名,非商業,保持一致

    我的郵件
    cnscud # gmail


    常用鏈接

    留言簿(15)

    隨筆分類(113)

    隨筆檔案(103)

    相冊

    友情鏈接

    技術網站

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 一级女性全黄生活片免费看| 亚洲欧洲久久久精品| 亚洲熟女乱综合一区二区| 黄床大片免费30分钟国产精品| 亚洲成A人片777777| 一区二区三区在线观看免费| 精品国产综合成人亚洲区| av无码免费一区二区三区| 久久久久久亚洲Av无码精品专口| 精品一区二区三区高清免费观看 | 亚洲中文无码亚洲人成影院| 最近最新高清免费中文字幕 | 又爽又黄无遮挡高清免费视频| 久久精品国产亚洲AV无码偷窥| 野花高清在线观看免费完整版中文| 狼人大香伊蕉国产WWW亚洲| 亚洲日韩精品一区二区三区| 亚洲一区免费视频| 日韩精品无码永久免费网站| 久久夜色精品国产嚕嚕亚洲av| 日本一区二区三区日本免费| 久久aa毛片免费播放嗯啊| 国产亚洲精品免费| 亚洲精品在线视频观看| 久久精品免费一区二区| 天堂亚洲免费视频| 亚洲午夜国产精品无码| 91在线视频免费看| 国产线视频精品免费观看视频| 亚洲精品亚洲人成在线播放| 亚洲精品成人无限看| 日本不卡高清中文字幕免费| 91精品手机国产免费| 国产99久久久国产精免费| 亚洲区日韩精品中文字幕| 亚洲五月六月丁香激情| 亚色九九九全国免费视频| 99精品视频免费| 国内成人精品亚洲日本语音| 亚洲jjzzjjzz在线播放| 四虎永久在线精品免费影视 |