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

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

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

    sitemesh的問題及解決

    再說 sitemesh 的問題,同樣是做 openfans 網摘功能出現的。做好了 IE 插件,有 fans 反饋說彈出頁面太大,這也難怪,用了 sitemesh head footer 都在頁面上,想縮小頁面,肯定得把 head footer 都去掉,做個干凈點的。既然用了 sitemesh 肯定是希望最方便的搞定這個,而不用動任何邏輯(包括頁面邏輯)。這個好辦,文檔里有說,通過在 sitemesh.xml 中增加

    < mapper

    ???????????
    class = " com.opensymphony.module.sitemesh.mapper.ParameterDecoratorMapper " >

    ???????????
    < param?name = " decorator.parameter " ?value = " decorator " ? />

    ???????????
    < param?name = " parameter.name " ?value = " confirm " ? />

    ???????????
    < param?name = " parameter.value " ?value = " true " ? />

    ???????
    </ mapper >

    就能搞定,這樣只需要使用參數如 saveSnippet.html?decorator=simple&confirm=true ,就能讓它使用指定的 decorator 。然后做一個去掉 head footer 只保留必要的 js css 引用的 simple.jsp 頁面,同時在 decorator.xml 中配

    < decorator?name = " simple " ?page = " simple.jsp " ></ decorator >

    就應該可以搞定。

    但怎么測,就是不使用這個 simple decorator 。沒辦法,只好跟進 sitemesh 源碼中去調試,進入 ParameterDecoratorMapper 類,它繼承了 AbstractDecoratorMapper 類,然后有一個 init 方法一個 getDecorator 方法。各打一個斷點, init 方法在 tomcat 啟動就會執行,也正常初始化了, getDecorator 方法卻始終不調用,一時想不出辦法。看到篇文章說不自己寫 sitemesh.xml 而使用自帶的 com/opensymphony/module/sitemesh/factory/sitemesh-default.xml 也可以,于是備份并刪除我寫的 sitemesh.xml ,居然成功了。為什么我寫的就不行呢?差別一是我的簡化了很多,只有

    < mapper

    ????
    class ="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper" >

    ???????????
    < param? name ="config" ?value ="${decorators-file}" ? />

    ???????
    </ mapper >

    和剛加的

    ParameterDecoratorMapper ,二就是順序,我的 ParameterDecoratorMapper 放在了 ConfigDecoratorMapper 后面,會不會是順序原因呢,調換一下,果然成功了。問題是解決了,原理呢?再花點時間跟一下代碼了解下原理,原來使用了 Factory ,它會調用各個配置的 Mapper init 方法,并放入 map 中,然后到時選擇一個 Mapper ,如果符合條件就使用,否則繼續往下找。這里就有了順序的問題,因為我在 decorator.xml 中使用了
    <decorator?name="default"?page="default.jsp">

    ????????
    <pattern>/*.html</pattern>

    ????
    </decorator>

    ,這樣如果 ConfigDecoratorMapper 放在前面,他就先找這個 Mapper ,一看 saveSnippet.html?decorator=simple&confirm=true ,符合 pattern 啊,就使用它了,另一個 ParameterDecoratorMapper 根本得不到機會,所以也進不了它的 getDecorator 方法。換了順序就是它先進去,所以執行,其它的 url 也是先找它,但不匹配,就又交給 ConfigDecoratorMapper 了。呵呵,問題也解決了,對 sitemesh 的認識又進了一步。

    posted on 2007-03-11 22:54 pesome 閱讀(2991) 評論(0)  編輯  收藏 所屬分類: 開源軟件

    <2007年3月>
    25262728123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    公告

    主要記錄作者在學習java中的每一步足跡。除非特別說明,所有文章均為本blog作者原創,如需轉載請注明出處和原作者,如用于商業目的,需跟作者本人聯系。
    歡迎大家訪問:

    常用鏈接

    留言簿(16)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊

    收藏夾

    java技術

    人間百態

    朋友們的blog

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 一级**爱片免费视频| 亚洲国产无套无码av电影| 亚洲a级在线观看| 1000部夫妻午夜免费| 亚洲人成在线播放网站岛国| 热久久这里是精品6免费观看| 久久久久亚洲精品男人的天堂 | 日韩免费高清大片在线| 亚洲无mate20pro麻豆| 久久天天躁狠狠躁夜夜免费观看| 亚洲欧洲精品一区二区三区| 亚洲视频在线免费| 亚洲精品国产福利在线观看| 亚洲高清免费视频| 在线涩涩免费观看国产精品| 亚洲男人的天堂在线播放| 日韩在线免费播放| 99re6在线精品视频免费播放| 国产综合成人亚洲区| 亚洲国产成人久久综合一| 亚洲av区一区二区三| 免费国产污网站在线观看| 亚洲欧美一区二区三区日产| 久久亚洲精品无码AV红樱桃| 亚洲黄黄黄网站在线观看| 久久久久久久免费视频| 中文字幕乱码亚洲精品一区| 精品久久久久久亚洲| 国产免费A∨在线播放| 亚洲综合精品伊人久久| 亚洲国产天堂久久综合网站| 亚洲国产日韩在线观频| 国产精品色午夜视频免费看| 天天影视色香欲综合免费| 亚洲精品动漫免费二区| 中文字幕亚洲综合久久| 国产亚洲av片在线观看16女人| 免费一级毛片正在播放| 久久免费高清视频| 国产精品小视频免费无限app| 国产亚洲精品AAAA片APP|