<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

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲精品无码一区二区| 日韩电影免费观看| 国产v精品成人免费视频400条| 中文字幕亚洲精品资源网| 亚洲国产一级在线观看| 在线免费不卡视频| 一个人免费观看视频在线中文 | 国产av无码专区亚洲av果冻传媒| 国产精品视频免费一区二区| 美女黄频免费网站| 亚洲色欲色欱wwW在线| 亚洲大香人伊一本线| 午夜寂寞在线一级观看免费| 日本视频一区在线观看免费| 亚洲精品自偷自拍无码| 黄色a三级三级三级免费看| 亚洲七久久之综合七久久| 亚洲性无码av在线| 亚洲高清免费在线观看| 久久亚洲精品无码| 99在线精品视频观看免费| 久久久久久一品道精品免费看| 久久九九免费高清视频| jizz免费在线观看| 岛国精品一区免费视频在线观看 | 成人免费一区二区三区| 国产免费131美女视频| 成全视频在线观看免费高清动漫视频下载 | 中文字幕无码免费久久9一区9| 亚洲aⅴ无码专区在线观看春色| 亚洲成人午夜电影| 亚洲国产美女福利直播秀一区二区| 色拍自拍亚洲综合图区| 亚洲国产日韩一区高清在线| 波多野结衣免费在线观看| 亚洲一区二区免费视频| 国产在线a免费观看| 国产一区二区三区免费观看在线| 四虎亚洲精品高清在线观看| 亚洲人成人77777网站| 国内外成人免费视频|