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

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

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

    云自無心水自閑

    天平山上白云泉,云自無心水自閑。何必奔沖山下去,更添波浪向人間!
    posts - 288, comments - 524, trackbacks - 0, articles - 6
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    Struts2中doubleselect的使用方法

    Posted on 2008-03-27 22:08 云自無心水自閑 閱讀(12145) 評論(16)  編輯  收藏 所屬分類: Java心得體會Struts2
    在Struts2的官方網站上,有doubleselect的用法示例,但是那個例子比較簡單。
    <s:doubleselect label="doubleselect test2" name="menu" list="#{'fruit':'Nice Fruits', 'other':'Other Dishes'}" doubleName="dishes" doubleList="top == 'fruit' ? {'apple', 'orange'} : {'monkey', 'chicken'}" />
    上面的例子演示了doubleselect的基本用法,但是其list和doubleList都是固定的。尤其是doublelist的切換使用了3目運算符 ? :,并沒有太大的實際使用價值。在實際應用中,list往往是action返回的一個List<DataObject>,listKey和listValue來顯示第一級下拉框,doubleList往往是一個Map<Integer, List<DataObject>>,其中Map中的Key值是第一級下拉框的listKey。
    舉個例子:
    Data Object:
    public class Book {
            
    private int id;
            
    private String name;
            
    private int categoryId;

            
    // getter and setter..
    }


    public class Category {
            
    private int id;
            
    private String name;

            
    // getter and setter..
    }


    JSP:
    <s:doubleselect list="categoryList" listKey="id" listValue="name"
       doubleName="bookId" doubleList="bookMap.get(top.id)" doubleListKey="id" doubleListValue="name" theme="simple"/>

    此處要注意的是top的用法,開始我以為top就是指代list的值,所以使用的是bookMap.get(top),但是二級下拉框一直是空白,后來我突然想到說不定top是一個Category實例呢,嘗試了一下top.id,果然成功了。

    Action:

    public class DemoAction {
            
    private Map<Integer, List<Book>> bookMap;
            
    private List<Category> categoryList;

            
    public String execute() throws Exception {
                    categoryList 
    = new ArrayList<Cateogry>();

                    Category category;
                    category 
    = new Category();
                    category.setId(
    1);
                    category.setName(
    "Fiction");
                    categoryList.add(category);
                    category 
    = new Category();
                    category.setId(
    2);
                    category.setName(
    "Java");
                    categoryList.add(category);

     

                    bookMap 
    = new HashMap<Integer, List<Book>>();

                    List
    <Book> bookList = new ArrayList<Book>();
                    Book book;
                    book 
    = new Book();
                    book.setId(
    1);
                    book.setName(
    "Harry Porter");
                    book.setCategoryId(
    1);
                    bookList.add(book);

                    book 
    = new Book();
                    book.setId(
    2);
                    book.setName(
    "Nightmare");
                    book.setCategoryId(
    1);
                    bookList.add(book);

                    bookMap.put(
    1, bookList);

     

                    bookList 
    = new ArrayList<Book>();
                    book 
    = new Book();
                    book.setId(
    3);
                    book.setName(
    "Thinking in Java");
                    book.setCategoryId(
    2);
                    bookList.add(book);
                    book 
    = new Book();
                    book.setId(
    4);
                    book.setName(
    "Head First Design Patterns");
                    book.setCategoryId(
    2);
                    bookList.add(book);

                    bookMap.put(
    2, bookList);


                    
    return SUCCESS;
            }

            
    // getter and setter..
    }






    評論

    # re: Struts2中doubleselect的使用方法[未登錄]  回復  更多評論   

    2008-03-28 12:43 by allenny
    Struts2很多標簽的用法要靠猜的,真是很郁悶

    # re: Struts2中doubleselect的使用方法  回復  更多評論   

    2008-03-29 11:22 by usherlight
    是的,感覺struts2的文檔還是不夠詳細具體。

    # re: Struts2中doubleselect的使用方法  回復  更多評論   

    2008-04-08 16:44 by struts2
    經測試這段代碼有以下幾個問題,
    1、代碼第二行,
    private Map<Integer, List<Book>> bookList;
    應該是
    private Map<Integer, List<Book>> bookMap;
    2、book 里面只有一個值,由于沒有聲明book 類型為singleton,所有你存那么多值,最終在頁面最的時候只有一個,那就是 "Head First Design Patterns"

    最后謝謝樓主給了我一個提示,最終解決了我的問題。

    # re: Struts2中doubleselect的使用方法  回復  更多評論   

    2008-04-10 10:40 by usherlight
    謝謝你指出代碼中的錯誤。我這段代碼不是在Eclipse這樣的集成開發環境里寫的,所以出現了一些錯誤。

    # re: Struts2中doubleselect的使用方法[未登錄]  回復  更多評論   

    2008-04-14 18:09 by 阿偉
    不知道為什么總是報:“FreeMarker template error!”的錯誤???

    # re: Struts2中doubleselect的使用方法[未登錄]  回復  更多評論   

    2008-04-14 18:17 by 阿偉
    剛解決,<s:form 里面沒加name這個屬性,瘋掉....

    # re: Struts2中doubleselect的使用方法  回復  更多評論   

    2008-06-26 10:05 by wu
    報模塊找不到的錯誤,
    The module has not been deployed.
    See the server log for details.
    at org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment.deploy(Deployment.java:174)
    at org.netbeans.modules.j2ee.ant.Deploy.execute(Deploy.java:104)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
    at sun.reflect.GeneratedMethodAccessor121.invoke(Unknown Source)
    在netbeans中加入struts2,只加了最基本的5個jar包。偶是菜鳥。。。
    完全不知道怎么解決。

    # re: Struts2中doubleselect的使用方法  回復  更多評論   

    2008-06-27 13:12 by usherlight
    @wu
    是在什么地方發現的這個錯誤?能說得再詳細一些嗎?

    # re: Struts2中doubleselect的使用方法  回復  更多評論   

    2008-08-04 11:45 by xingdian119
    高手,拜托給看看這個問題,先謝謝啦。
    http://www.javaeye.com/problems/2059

    # re: Struts2中doubleselect的使用方法  回復  更多評論   

    2008-09-12 18:50 by waylon
    LZ我按照你上面寫的做了一下,結果不能成功
    拋出了異常
    嚴重: Servlet.service() for servlet jsp threw exception
    tag 'doubleselect', field 'list': The requested list key 'categoryMap.get(top.id)' could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or people.{name} - [unknown location]

    貌似這個標簽本身就有個缺陷......
    (注:我的配置包就是最基本的5個,其他的配置也是正確的,而且也測試了多次,在網上也找了一些類似的資料,結果還是報錯)

    # re: Struts2中doubleselect的使用方法  回復  更多評論   

    2008-09-12 18:50 by waylon
    我的struts.xml配置
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
    <!-- struts 是struts2 的根元素 -->
    <struts>

    <!-- Struts2 的action 必須放在制定的包空間下定義 -->
    <package name="login" extends="struts-default">
    <action name="Login" class="org.waylon.DemoAction">
    <result name="success">/index.jsp</result>
    </action>
    </package>

    </struts>

    # re: Struts2中doubleselect的使用方法  回復  更多評論   

    2008-09-12 18:53 by waylon
    index.jsp

    <%@ page language="java" pageEncoding="UTF-8"%>
    <%@ taglib prefix="s" uri="/struts-tags"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>dfsdfd</title>
    <s:head />
    </head>
    <body>
    <s:form action="Login" name="login">
    <s:doubleselect list="categoryList" listKey="id" listValue="name"
    doubleName="bookId" doubleList="bookMap.get(top.id)" doubleListKey="id" doubleListValue="name" theme="simple" formName="login"/>
    </s:form>

    </body>
    </html>

    # re: Struts2中doubleselect的使用方法  回復  更多評論   

    2008-09-12 18:54 by waylon
    然后3個java文件和你的一樣,但是就是運行不起....
    不知道為什么?
    望LZ給予解答

    # re: Struts2中doubleselect的使用方法  回復  更多評論   

    2008-09-13 18:59 by usherlight
    @waylon
    根據錯誤信息,錯誤是因為你的bookMap.get(top.id)返回的結果不是一個list,
    那么需要檢查以下一些東西:
    1. bookMap的值是否正確(bookMap是否為空,bookMap集合里的元素值是否正確)
    2. top.id的值是否正確(也就是categoryList的值是否正確)
    3. categoryList里的第一個值是否是bookMap里的一個鍵值

    # re: Struts2中doubleselect的使用方法  回復  更多評論   

    2008-10-15 11:22 by zgxer
    listKey與doubleListKey 如何關聯,我好像沒法通過listkey篩選???

    # re: Struts2中doubleselect的使用方法  回復  更多評論   

    2008-10-21 19:24 by usherlight
    @zgxer
    doubleSelect的運行原理是這樣的:
    list屬性指定了一個list,這個list中的值可以是一個key-value對,也可以是一個JavaBean,如果是JavaBean,需要用listKey和listValue來指定list的key和value使用JavaBean中的哪個屬性。
    doubleList也是一個list,但是如何實現聯動的呢?關鍵就是在于bookList的寫法是:top關鍵字的應用。在我的例子中是這樣的:doubleList="bookMap.get(top.id)",bookMap.get(top.id)返回的就是一個List,而且是根據top.id返回的List,top代表是就是list當前選中的對象。
    主站蜘蛛池模板: 一区二区免费国产在线观看| 97在线视频免费播放| 亚洲欧洲国产精品香蕉网| 精品视频在线免费观看| 中文字幕亚洲综合小综合在线 | 亚洲高清无码在线观看| a毛片全部免费播放| 亚洲日产2021三区在线| 亚洲AV永久无码精品一区二区国产| 免费黄网站在线观看| 亚洲人xxx日本人18| 亚洲综合色成在线播放| 色老头永久免费网站| 免费看一级高潮毛片| 亚洲福利视频网站| 亚洲精品视频免费观看| 亚洲成人免费网址| 国产人成网在线播放VA免费| 亚洲一卡2卡4卡5卡6卡在线99| 国产亚洲精品激情都市| 中字幕视频在线永久在线观看免费| 精品国产免费一区二区三区| 最新亚洲春色Av无码专区| 亚洲精品高清国产一线久久| 在线a人片天堂免费观看高清| 久99久精品免费视频热77| 美女羞羞喷液视频免费| 亚洲国产精品xo在线观看| 亚洲国产精品自产在线播放 | 国产一级淫片a免费播放口之| 无码国产精品一区二区免费式芒果| 国产精品无码亚洲精品2021| 亚洲宅男天堂a在线| 伊伊人成亚洲综合人网7777| 永久黄网站色视频免费直播| 51精品视频免费国产专区| 中文字幕永久免费| 真正全免费视频a毛片| 亚洲熟女www一区二区三区| 亚洲蜜芽在线精品一区| 国产AV无码专区亚洲Av|