談笑有鴻儒,往來無白丁

          在恰當(dāng)?shù)臅r(shí)間、地點(diǎn)以恰當(dāng)?shù)姆绞奖磉_(dá)給恰當(dāng)?shù)娜?..  閱讀的時(shí)候請(qǐng)注意分類,佛曰我日里面是談笑文章,其他是各個(gè)分類的文章,積極的熱情投入到寫博的隊(duì)伍中來,支持blogjava做大做強(qiáng)!向dudu站長致敬>> > 我的微博敬請(qǐng)收聽
          假設(shè)您要從資料庫中查詢出一些字串,然後填寫到表單的下拉選單中。

          例如一個(gè)示意的Java程式如下:
          1
          2
          3
          4
          5
          6
          7
          8
          package onlyfun.caterpillar;
          ?
          publicclass Option {
          public String[] getOptions() {
          // 實(shí)際上這些字串是從資料庫中查到的啦…
          returnnew String[] {"良葛格", "毛美眉", "米小狗"};
          }
          }


          傳回的字串陣列,您要填寫到下拉選單中,當(dāng)然,首先我們要在dwr.xml中開發(fā)這個(gè)物件…
          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN""http://www.getahead.ltd.uk/dwr/dwr10.dtd">

          <dwr>
          <allow>
          <create creator="new" javascript="OPT">
          <param name="class" value="onlyfun.caterpillar.Option"/>
          </create>
          </allow>
          </dwr>


          這是我們的網(wǎng)頁…
          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
          <html>
          <head>
          <meta http-equiv="Content-Type" content="text/html; charset=BIG5">
          <script src="option.js" type="text/javascript"></script>
          <script src="dwr/interface/OPT.js" type="text/javascript"></script>
          <script src="dwr/engine.js" type="text/javascript"></script>
          <script src="dwr/util.js" type="text/javascript"></script>
          ?
          </head>
          ?
          <body>
          選項(xiàng): <select id="opts"></select>
          </body>
          </html>


          傳回的字串陣列會(huì)填入opts這個(gè)select中,我們的option.js如下…
          1
          2
          3
          4
          5
          6
          7
          8
          window.onload = function() {
          OPT.getOptions(populate);
          };
          ?
          function populate(list){
          DWRUtil.removeAllOptions("opts");
          DWRUtil.addOptions("opts", list);
          }


          夠簡單了…不需要解釋了…

          看一下結(jié)果…?



          好啦!我知道有人在說了,這個(gè)程式有夠無聊…Dead

          改一下!就是個(gè)不錯(cuò)的範(fàn)例了,例如連動(dòng)方塊,唔!在Ajax in action中叫啥?Dynamic double combo?…

          假設(shè)一個(gè)會(huì)去從資料庫中查詢資料的Java程式示意如下:
          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          16
          17
          18
          19
          20
          21
          22
          23
          24
          25
          26
          27
          28
          29
          30
          package onlyfun.caterpillar;
          ?
          import java.util.Map;
          import java.util.TreeMap;
          ?
          publicclass Bike {
          ??private Map<String, String[]> bikes;
          ??
          ??public Bike() {
          ????bikes = new TreeMap<String, String[]>();
          ????bikes.put("2000", new String[] {"2000 T1", "2000 T2", "2000 T3"});
          ????bikes.put("2001", new String[] {"2001 A1", "2001 A2"});
          ????bikes.put("2002", new String[] {"2002 BW1", "2002 BW2", "2002 BW"});
          ????bikes.put("2003", new String[] {"2003 S320"});
          ????bikes.put("2004", new String[] {"2004 TA1", "2004 TA2", "2004 TA3"});
          ??}
          ??
          ??public String[] getYears() {
          ????String[] keys = new String[bikes.size()];
          ????int i = 0;
          ????for(String key : bikes.keySet()) {
          ??????keys[i++] = key;
          ????}
          ????return keys;
          ??}
          ??
          ??public String[] getBikes(String year) {
          ????return bikes.get(year);
          ??}
          }


          getYears()跟getBkies()分別表示產(chǎn)品的年份跟型號(hào),這邊用Map模擬,實(shí)際上資料是來自資料庫的查詢。

          一樣的,在dwr.xml中設(shè)定:
          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN""http://www.getahead.ltd.uk/dwr/dwr10.dtd">

          <dwr>
          <allow>
          <create creator="new" javascript="Bike" scope="application">
          <param name="class" value="onlyfun.caterpillar.Bike"/>
          </create>
          </allow>
          </dwr>


          我們會(huì)有個(gè)腳踏車年份與型號(hào)查詢頁面:
          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
          <html>
          <head>
          <meta http-equiv="Content-Type" content="text/html; charset=BIG5">
          <title>Insert title here</title>
          <script type='text/javascript' src='dwr/interface/Bike.js'></script>
          <script type='text/javascript' src='dwr/engine.js'></script>
          <script type='text/javascript' src='dwr/util.js'></script>
          <script type='text/javascript' src='bike.js'></script>
          </head>
          <body onload="refreshYearList();">
          ??年份:<select id="years" onchange="refreshBikeList();"></select><br/><br/>
          ??型號(hào):<select id="bikes"></select><br/>
          </body>
          </html>


          注意,在選完第一個(gè)年份後,會(huì)觸發(fā)onchange事件,接著第二個(gè)下拉選單會(huì)自動(dòng)填上對(duì)應(yīng)年份的型號(hào),而不是按鈕按下,再去取得第二個(gè)下拉選單,然後refresh...blah...blah...

          bike.js如下…
          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          16
          17
          18
          19
          function refreshYearList() {
          Bike.getYears(populateYearList);
          }
          ?
          function populateYearList(list){
          DWRUtil.removeAllOptions("years");
          DWRUtil.addOptions("years", list);
          refreshBikeList();
          }
          ?
          function refreshBikeList() {
          var year = $("years").value;
          Bike.getBikes(year, populateBikeList);
          }
          ?
          function populateBikeList(list){
          DWRUtil.removeAllOptions("bikes");
          DWRUtil.addOptions("bikes", list);
          }


          一樣很簡單…

          看個(gè)無聊的畫面…XD




          Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1239538

          posted on 2007-03-05 11:48 壞男孩 閱讀(1061) 評(píng)論(1)  編輯  收藏 所屬分類: java命令學(xué)習(xí)

          FeedBack:
          # re: DWR 入門與應(yīng)用(二)
          2007-04-18 15:58 | 好風(fēng)如水
          dwr是個(gè)不錯(cuò)的東東,推薦使用  回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 乌海市| 平舆县| 冀州市| 鄂托克旗| 印江| 和林格尔县| 望都县| 肇东市| 扎赉特旗| 五原县| 北川| 水富县| 连州市| 和田县| 哈巴河县| 山阳县| 修文县| 温州市| 山东省| 萍乡市| 石家庄市| 永仁县| 高邮市| 宣武区| 濮阳县| 延边| 德清县| 施秉县| 剑阁县| 兴海县| 磐安县| 连江县| 泸州市| 岐山县| 尼勒克县| 怀来县| 尉犁县| 留坝县| 德江县| 峨眉山市| 腾冲县|