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

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

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

    為struts-menu的樹型菜單加入復選框

    Posted on 2007-07-20 19:18 oksonic 閱讀(7010) 評論(8)  編輯  收藏 所屬分類: java

    下載全部源代碼:http://www.oksonic.cn

    為struts-menu的樹型菜單加入復選框

     

    版本 0.2
      1.
    修改一個BUG,子菜單錯誤的問題
      2.
    新增一個menuId 屬性,用于返回選中的對像(也就是checkBoxvalue值)

     

    修改部份:CheckListMenuDisplayer.java

        原:

             protected void displayComponents(MenuComponent menu, int level)

        throws JspException, IOException {

            MenuComponent[] components = menu.getMenuComponents();

          if(menu.isChecked())

            checked = CHECKBOX_IS_CHECKED;

            else

            checked = CHECKBOX_ISNOT_CHECKED;

            if (components.length > 0) {

           紅字部份取消,移到以下位置:

        for (int i = 0; i < components.length; i++) {

                  MenuComponent mMenu = components[i];

                  if(menu.isChecked())

                     checked = CHECKBOX_IS_CHECKED.replaceFirst("\\?", mMenu.getMenuId());

                    else

                      checked = CHECKBOX_ISNOT_CHECKED.replaceFirst("\\?", mMenu.getMenuId());

                    // check the permissions on this component

                    if (isAllowed(components[i])) {

           …………

        MenuBase中加入 String menuId 屬性,創建get  / set 方法

    **************************************************************************************

     

    版本0.1

    1. 修改net.sf.navigator.menu.MenuBase 類,加入checked屬性,生成get/set方法

    2. 修改net.sf.navigator.displayer.DisplayerStrings.properties資源文件,在帶有<li標簽的結束符后面加入{4}

       如:lmd.menu.top=\t<li class="menubar">{4}\n

    3. 新建net.sf.navigator.displayer.CheckListMenuDisplayer.java文件,此文件的內容為ListMenuDisplayer.java加以修改而成

       在類中加入兩個常數

       private static final String CHECKBOX_IS_CHECKED="<input type='checkbox' name='checked' checked='CHECKED'/>";

       private static final String CHECKBOX_ISNOT_CHECKED="<input type='checkbox' name='checked'/>";

       /** 用于判斷是否選中 **/

        private String checked = CHECKBOX_ISNOT_CHECKED;

     

       a) 修改以下方法為下面的內容

    public void display(MenuComponent menu) throws JspException, IOException {

            if (isAllowed(menu)) {

                if(menu.isChecked())

            checked = CHECKBOX_IS_CHECKED;

               else

            checked = CHECKBOX_ISNOT_CHECKED;

                out.println(displayStrings.getMessage("lmd.menu.top", null,null,null,null,checked));

                displayComponents(menu, 0);

                out.println(displayStrings.getMessage("lmd.menu.bottom"));

            }

        }

     

     

        protected void displayComponents(MenuComponent menu, int level)

        throws JspException, IOException {

            MenuComponent[] components = menu.getMenuComponents();

          if(menu.isChecked())

            checked = CHECKBOX_IS_CHECKED;

            else

            checked = CHECKBOX_ISNOT_CHECKED;

            if (components.length > 0) {

                // eliminate spaces in string used for Id

                String domId = StringUtils.deleteWhitespace(getMessage(menu.getName()));

                // added to create a unique id everytime

                domId += ((int) (1000*Math.random()));

     

                String menuClass = "menu";

     

                if (level >= 1) {

                    menuClass = "submenu";

                }

     

                // if there is a location/page/action tag on base item use it

                if (menu.getUrl() != null ){

                    out.println(displayStrings.getMessage("lmd.menu.actuator.link",

                                domId, getMessage(menu.getTitle()), menuClass,

                                getMessage(menu.getUrl())));

                } else {

                    out.println(displayStrings.getMessage("lmd.menu.actuator.top",

                            domId,

                            getMessage(menu.getTitle()),

                            menuClass));

                }

               

                for (int i = 0; i < components.length; i++) {

                    // check the permissions on this component

                    if (isAllowed(components[i])) {

                        if (components[i].getMenuComponents().length > 0) {

                            out.println("<li>");

                            displayComponents(components[i], level + 1);

     

                            out.println(displayStrings.getMessage("lmd.menu.actuator.bottom"));

                        } else {

                            out.println(displayStrings.getMessage("lmd.menu.item",

                                                                  components[i].getUrl(),

                                                                  super.getMenuToolTip(components[i]),

                                                                  getExtra(components[i]),

                                                                  this.getMessage(components[i].getTitle()),

                                                                  checked

                                                                  ));

                        }

                    }

                }

     

                // close the </ul> for the top menu

                if (menuClass.equals("menu")) {

                    out.println("</ul>");

                }

            } else {

                if (menu.getParent() == null) {

                    out.println(displayStrings.getMessage("lmd.menu.standalone",

                                                          menu.getUrl(),

                                                          super.getMenuToolTip(menu),

                                                          getExtra(menu),

                                                          getMessage(menu.getTitle()),checked));

                } else {

                    out.println(displayStrings.getMessage("lmd.menu.item",

                                                          menu.getUrl(),

                                                          super.getMenuToolTip(menu),

                                                          getExtra(menu),

                                                          getMessage(menu.getTitle()), checked));

                }

            }

        }

     

     

    4. 修改樣式文件

    @import url(global.css);

     

    .menuList {

      margin: 0px;

      padding: 10px 0px 10px 15px;

    }

     

    li.menubar {

      background: url(../images/plus.gif) no-repeat 2.2em 0.5em;

      font-size: 12px;

      line-height: 1.5em;

      list-style: none outside;

    }

     

    .menu, .submenu {

      display: none;

      margin-left: 15px;

      padding: 0px;

    }

     

    .menu li, .submenu li  {

      background: url(../images/square.gif) no-repeat 2em 0.5em;

      list-style: none outside;

    }

     

    li.menubar a.standalone {

      background: url(../images/square.gif) no-repeat 2em 0.5em !important;

    }

     

    a.actuator, a.standalone {

      background-color: transparent;

      color: #000;

      font-size: 12px;

      padding-left: 15px;

      text-decoration: none;

    }

     

     

    .menu li a, .submenu li a {

      background-color: transparent;

      color: #000;

      font-size: 12px;

      padding-left: 15px;

      text-decoration: none;

    }

     

    a.actuator:hover, .menu li a:hover, submenu li a:hover, li a.standalone:hover {

      text-decoration: underline;

    }

     

    /* styles to allow for base links */

    li a.base, li a.base:visited {

      background-color: transparent;

      color: #000;

      font-size: 12px;

      padding-left: 0px;

      text-decoration: none;

    }

     

    li a.base:hover {

      color: #CC0000;

      text-decoration: none;

    }

     

    span.key {

      text-decoration: underline;

    }

     

    a.highlight {

        color: red !important;

        font-weight: bold;

    }

     

     

     

    email:oksonic@tom.com

    Feedback

    # re: 為struts-menu的樹型菜單加入復選框  回復  更多評論   

    2007-08-11 08:32 by banseon
    最近你的文章越寫越少啦.是不是太忙了.

    # re: 為struts-menu的樹型菜單加入復選框  回復  更多評論   

    2007-08-12 15:46 by 困惑
    就是這四點嗎?頁面內容要不要變?

    # re: 為struts-menu的樹型菜單加入復選框[未登錄]  回復  更多評論   

    2007-11-28 20:46 by dd
    能否告知一下jsp頁面的情況阿?

    # re: 為struts-menu的樹型菜單加入復選框  回復  更多評論   

    2008-03-12 23:20 by 紙黃金
    好像很忙哦不見你寫文章了

    # re: 為struts-menu的樹型菜單加入復選框  回復  更多評論   

    2008-05-22 16:58 by 百度Hi
    很棒,樓主很忙吶!~~~非常感謝。

    # re: 為struts-menu的樹型菜單加入復選框  回復  更多評論   

    2008-10-31 18:52 by 紙黃金
    一個字。看得頭暈。。。要慢慢學

    # re: 為struts-menu的樹型菜單加入復選框  回復  更多評論   

    2009-12-01 12:10 by 創意產品批發
    謝謝!網上找了好久終于找到了。。。

    # re: 為struts-menu的樹型菜單加入復選框  回復  更多評論   

    2010-04-16 17:16 by 北京翻譯公司
    哈哈

    posts - 103, comments - 1104, trackbacks - 0, articles - 0

    Copyright © oksonic

    主站蜘蛛池模板: 亚洲毛片免费视频| 国产精品免费无遮挡无码永久视频| 亚洲AV无码专区电影在线观看| 亚洲av无码兔费综合| 久久久www成人免费毛片| 亚洲男人的天堂久久精品 | 一区二区三区免费视频网站| 真实乱视频国产免费观看| 亚洲精品V天堂中文字幕| 热99re久久精品精品免费| 久久精品亚洲日本波多野结衣| 免费的涩涩视频在线播放| 亚洲AV无码AV吞精久久| 亚洲国产精品一区二区九九| 亚洲成a人片77777老司机| 国产精品无码亚洲精品2021| 午夜国产大片免费观看| 手机永久免费的AV在线电影网| 亚洲中文字幕视频国产| 男人的天堂网免费网站| 亚洲高清无在码在线电影不卡| 国产成人精品免费午夜app| 国产AV旡码专区亚洲AV苍井空| 日韩黄色免费观看| 日韩精品视频在线观看免费 | 中文字幕在线观看免费视频| 亚洲最大视频网站| 毛片大全免费观看| 四虎影视永久在线精品免费| 亚洲成AV人片在线观看无| 精品免费AV一区二区三区| 国产亚洲美女精品久久久2020| 久久久99精品免费观看| 亚洲中文字幕久久精品无码VA| 国产极品美女高潮抽搐免费网站| 一区二区三区在线免费观看视频 | 亚洲午夜精品久久久久久app| 又粗又硬又黄又爽的免费视频| 99精品视频在线观看免费| 亚洲日本视频在线观看| 四虎亚洲国产成人久久精品|