<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成人无码电影 | 亚洲人成人77777网站不卡| 亚洲精品无码久久毛片| 97在线线免费观看视频在线观看| 岛国岛国免费V片在线观看| 亚洲AV无码男人的天堂| 亚洲制服丝袜一区二区三区| 久久久久久a亚洲欧洲aⅴ| 免费人成在线观看网站视频| 免费国产黄线在线观看| 99爱在线精品免费观看| 91青青青国产在观免费影视| 亚洲成人午夜电影| 日韩在线免费播放| 亚洲美女在线国产| 国产一级淫片免费播放| 在线免费观看视频你懂的| 久久国内免费视频| 在线免费中文字幕| 99精品热线在线观看免费视频| 成人免费一区二区三区| 久久成人18免费网站| jizz中国免费| 国产特黄一级一片免费 | 噜噜嘿在线视频免费观看| 午夜国产精品免费观看| 最近最新高清免费中文字幕| 免费一级毛片在线播放视频| av午夜福利一片免费看久久| jizz中国免费| 精品97国产免费人成视频| 久久高潮一级毛片免费| 中文精品人人永久免费| 国产色爽免费无码视频| 青青草原1769久久免费播放| 国产精品免费高清在线观看| 久久综合国产乱子伦精品免费| 日韩精品久久久久久免费| 18女人腿打开无遮掩免费| 国产成人无码免费看视频软件 | 亚洲日韩久久综合中文字幕|