<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人片在线观看| 黄页网站在线免费观看| 日韩免费无码一区二区视频| 亚洲中文字幕日本无线码| 37pao成人国产永久免费视频 | 国产日韩在线视频免费播放| 亚洲精品国产va在线观看蜜芽| 美女视频黄.免费网址| 亚洲第一视频在线观看免费| 国产精品免费αv视频| 亚洲一区二区三区在线观看精品中文 | 亚洲 日韩经典 中文字幕| 最近中文字幕免费2019| 中文字幕亚洲综合久久| 91免费播放人人爽人人快乐| 国产亚洲精品影视在线| 国产大片91精品免费看3| 免费中文字幕视频| 亚洲Av永久无码精品三区在线| 久久99国产综合精品免费| 亚洲小说区图片区| 日韩激情无码免费毛片| 一区二区三区免费在线视频 | 久久精品免费视频观看| 亚洲高清在线mv| 在线观看免费a∨网站| 理论秋霞在线看免费| 亚洲日产无码中文字幕| 1000部羞羞禁止免费观看视频| 亚洲国产精品18久久久久久| 亚洲成AV人在线观看网址| 暖暖免费日本在线中文| 国产精品亚洲自在线播放页码| 亚洲精品乱码久久久久久蜜桃| 久久国产精品免费看| 亚洲日韩国产欧美一区二区三区| 亚洲AV网站在线观看| 97精品免费视频| 男人免费视频一区二区在线观看|