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

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

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

    我的Blog我做主^_^

    走向一條通往JAVA的不歸路...

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      64 隨筆 :: 68 文章 :: 77 評論 :: 0 Trackbacks
    DWR中的util.js
    1. $("id")?大概等價于document.getElementById("id") 如果返回結果唯一的話返回該元素的值,不唯一則返回一個數組 .另外,如果單獨使用util.js的話,可能在IE5以下的瀏覽器中無法正常使用,需要跟engine.js配合使用. 注意,這里得到的是一個對象,如果需要得到該對象的值的話,需要用innerHTML來取得.或者直接用DWRUtil.getValue("elementId")來取值.
    2. DWRUtil.toDescriptiveString("elementId",debugLevel),這是一個debug用的函數.第一個參數是元素的id,第二個參數是debug等級,可以是0,1,2.隨著等級增加,輸出信息也會增加.注意這個函數只是一個debug工具,不要對它抱有太大幻想.
    3. DWRUtil.getText("elementId"),返回一個select下拉菜單中的text值.僅適用于select類型的元素.
    4. DWRUtil.getValue("elementId"),返回一個元素的值,This method works for most HTML elements including selects (where the option with a matching value and not text is selected), input elements (including textareas) divs and spans
    5. DWRUtil.getValues({ div:null,
      ? textarea:null,
      ? select:null,
      ? text:null,
      ? password:null,
      ? formbutton:null,
      ? button:null
      }),返回一個對象包含這些元素的值,暫時不知道做什么用的.
    6. DWRUtil.onReturn(event, submitFunction) 定義在輸入框中按回車的響應,防止執行submit.
    7. DWRUtil.addOptions() 一個重要的方法
    ?
    ?
    DWRUtil.getValues({
    ?div:null,
    ?textarea:null,
    ?select:null,
    ?text:null,
    ?password:null,
    ?formbutton:null,
    ?button:null
    })

    這個函數可以自動取得頁面上指定ID的值,并且返回一個,java中可以認識的map(Hashtable或HashMap)值.下面是我測試示例;

    頁面:

    saveuser.htm

    <html>
    <head>
    <title>
    saveUser
    </title>
    <!--dwr/engine.js是dwr的核心引擎腳本處理客戶端調用的轉換-->
    <script src="/oblog312/dwr/interface/SaveUserAction.js" type="text/j avascript"></script>
    <script src="/oblog312/dwr/engine.js" type="text/j avascript"></script>
    <!--dwr/util.js包含了工具函數簡化頁面處理-->
    <script src="/oblog312/dwr/util.js" type="text/j avascript"></script>
    <script type="text/j avascript">
    function saveuser() {
    ? ?//user = { id:"", firstName:"", lastName:"", birthday:"" };
    ? ?user = { id:null, firstName:null, lastName:null, birthday:null };
    ? ?var params = DWRUtil.getValues(user);
    ? ?alert(params);
    ? ?SaveUserAction.PutParams(params);
    ? ?alert("user.id:"+user.id);
    ? ?alert("user.firstName:"+user.firstName);
    ? ?alert("user.lastName:"+user.lastName);
    ? ?alert("user.birthday:"+user.birthday);
    }
    function hello(ok) {
    ? ?alert(ok);
    }
    </script>
    </head>
    <body bgcolor="#ffffff">
    <form action="" id="userForm" name="userForm" method="POST">
    ID:<input type="text" id="id" name="id" /><br />
    姓:<input type="text" id="firstName" name="firstName" /><br />
    名:<input type="text" id="lastName" name="lastName" /><br />
    出生日期:<input type="text" id="birthday" name="birthday" /><br />
    <input type="submit" onclick="saveuser()"/>
    </form>
    </body>
    </html>

    action部分(SaveUserAction.java):

    package com.action;

    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.action.ActionForm;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.apache.struts.action.ActionForward;
    import com.actionform.SaveUserActionForm;
    import org.apache.struts.action.Action;
    import java.util.*;

    public class SaveUserAction extends Action {
    ? ?public ActionForward execute(ActionMapping mapping, ActionForm form,
    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? HttpServletRequest request,
    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? HttpServletResponse response) {
    ? ? ? ?SaveUserActionForm saveUserActionForm = (SaveUserActionForm) form;
    ? ? ? ?throw new java.lang.UnsupportedOperationException(
    ? ? ? ? ? ? ? ?"Method $execute() not yet implemented.");
    ? ? }
    ? ?
    ? ?public String PutParams(Hashtable hash,HttpServletRequest request){
    ? ? ? ?Enumeration hashenum = hash.keys();
    ? ? ? ?while (hashenum.hasMoreElements()) {
    ? ? ? ? ?String name = (String) hashenum.nextElement();
    ? ? ? ? ?System.out.println("name:"+name);
    ? ? ? ? ?String value = (String) hash.get(name);
    ? ? ? ? ?System.out.println("value:"+value);
    ? ? ? ? } ? ? ? ?
    ? ? ? ?return "成功";
    ? ? }
    ? ?
    }


    重要的dwr.xml配置部分:

    ? ?<create creator="new" j avascript="SaveUserAction">
    ? ? ?<param name="class" value="/oblog312/com.action.SaveUserAction"/>
    ? ? ?<include method="PutParams"/>
    ? ?</create>
    ?
    DWRUtil.addRows()的用法:
    DWRUtil.addRows(”items”,items,cellFunctions);
    第一個items,應該是table的id,第2個items,是遠程返回的結果集,cellFunctions,對表格行填充的回調函數一類的。

    var cellFunctions = [ function(item) { return item.name; },
    function(item) { return item.description; },
    function(item) { return item.formattedPrice; },
    function(item) { var btn = document.createElement(”button”); btn.innerHTML = “Add to cart”; btn.itemId = item.id; btn.onclick = addToCartButtonHandler; return btn; }
    應該是一個function(item)就代表一列,return的就是傳入的結果集的某列的內容。那么這個表格就應該有4列。最后一列是靜態的html代碼了。不過沒研究一下,return回去動靜混合的內容,就是一個字串會如何。我猜應該也可以吧。

    ?
    先簡單介紹一下什么是DWR

    DWR - Direct Web Remoting

    ?ajax是一種提高web站點吸引力和實用性的書寫web頁面的方法。它從服務器端更新web頁面的特殊區域,從而增強用戶的交互性。它允許信息在短時間的延遲或不用刷新頁面的情況下更新。

    ?DWR減少了開發時間,也減少了一些可能的錯誤,這些錯誤是在提供常用的方法函數并消除一些與高交互性web站點有關的重復性代碼的時候產生的。

    ?DWR是作為開源軟件(ASL verssion 2.0)而可以免費得到的。它憑借它的廣闊的庫、例子和指南非常易于實現。把它結合到一個現有的站點是非常簡單的,同樣它也可以簡單地與大多數java框架結合。



    util.js ?util.js包含了一些使用的方法,從而幫助你利用j avascript(可能)從服務器端更新你的web數據。

    ?你可以在DWR之外的地方使用它,因為它并不依賴與DWR而實現。

    ?它包含四個頁面處理函數:getValue[s]()、setValue[s]()作用于除tables、lists和images以外的大多數html元素。getText()作用于select lists。

    ?addRows()和removeAllRows()用于編輯tables。addOptions()和removeAllOptions()用于編輯lists(如:select lists、ul、ol)。

    $()
    ?$函數(在j avascript中,他的名字是合法的)的思想是從prototype引進的。一般說來,$ = document.getElementById。在以后你花大量時間進行ajax編程的時候,在合適的地方使用這種格式是很有益的。

    ?'$'通過給定的ID在當前HTML頁面找到元素,如果多于一個的參數被提交,它就會返回一個包含已找到元素的數組。這個函數從prototype的library中得到的靈感,而且,它還能更好的工作在不同的瀏覽器中。



    Generating Lists

    ?DWR的一個功能可以給一個下拉列表(select list)添加選項,只需使用DWRUtil.addOptions()。

    ?如果你在更新列表之前,希望保留一些選項,你需要寫以下一些代碼:

    ? ? ?var sel = DWRUtil.getValue(id);
    ? ? ?DWRUtil.removeAllOptions(id);
    ? ? ?DWRUtil.addOptions(id, ...);
    ? ? ?DWRUtil.setValue(id, sel);

    ?如果你想有個初始化選項,如:“please select”,你可以直接使用:

    ? ? ?DWRUtil.addOptions(id, ["Please select"]);

    DWRUtil.addOptions 有5種調用方法:Array: DWRUtil.addOptions(selectid, array) 。selectid為目標ID,array為每一項的text。

    Array of objects (option text = option value): DWRUtil.addOptions(selectid, data, prop) 用text和value的集合來為每一個數組元素創建一個選項,pro參數指定text和value的值。

    Array of objects (with differing option text and value): DWRUtil.addOptions(selectid, array, valueprop, textprop) 用text和value的集合來為每一個數組元素創建一個選項,valueprop確定value,textprop確定text。

    Object: DWRUtil.addOptions(selectid, map, reverse) 為map中每一個屬性(property)創建一個選項,屬性名作為選項的value,屬性的value作為選項的text。這樣做看起來是錯的,但實際上這種做法的確是正確的。如果reverse參數被設置為true,則屬性的value還是被用做選項的value。

    Map of objects: DWRUtil.addOptions(selectid, map, valueprop, textprop) 為map中的每一個對象創建一個選項,valueprop指定選項的value,textprop指定選項的text。



    Generating Tables

    DWRUtil.addRows() 從一個數組(第二個參數)取得值,創建table的每一行。從另一個數組(第三個參數)去得值,為table的每一行創建若干列。



    DWRUtil.getText(id)

    可以根據id取得text的值,這個方法只能用于select list

    DWRUtil.getValue(id)

    可以根據id取得value,使用這個方法,你不必在意div和select list的不同。

    DWRUtil.getValues()

    getValues() is similar to getValue() except that the input is a Javascript object that contains name/value pairs. The names are assumed to be the IDs of HTML elements, and the values are altered to reflect the contents of those IDs. This method does not return the object in question, it alters the value that you pass to it.

    這個方法和getValue()一樣,只是它傳入的是一個包含名字和數值的j avascript對象.這個名字就是HTML元素的ID。這個方法不會返回任何對象,它只會將ID的value映射給傳入的value。例:

    function doGetValues() {

    ?var text= "{
    ?div:null,
    ?textarea:null,
    ?select:null,
    ?text:null,
    ?password:null,
    ?formbutton:null,
    ?button:null
    }";
    ?var object = objectEval(text); ? ?//j avascript對象
    ?DWRUtil.getValues(object);
    ?var reply = DWRUtil.toDescriptiveString(object, 2); ? //toString
    ?reply = reply.replace(/n/g, "<br/>"); ? ? ? ? ? ? ? ? ? ? ? ?//轉意
    ?DWRUtil.setValue("getvaluesret", reply); ? ? ? ? ? ? ? ? ? ? //顯示
    }



    DWRUtil.onReturn

    貼一段代碼,暫時不理解,用onReturn和不用有什么區別

    <script>
    function submitFunction()
    {
    ? ?$("alert").style.display = "inline";
    ? ?setTimeout("unsubmitFunction();", 1000);
    }
    function unsubmitFunction()
    {
    ? ?$("alert").style.display = "none";
    }
    </script>

    <p><input type="text" onkeydown="DWRUtil.onReturn(event, submitFunction)"/>
    <input type="button" onclick="submitFunction()" value="GO"/>
    <span id="alert" style="display:none; background:#FFFFDD; font-weight:bold;">submitFunction called</span>
    </p>



    DWRUtil.selectRange

    在一個input box里選一個范圍

    DWRUtil.selectRange("sel-test", $("start").value, $("end").value);



    DWRUtil.setValue(id, value)

    用ID找到元素,并更新value

    DWRUtil.setValues()

    和setValue(id,value)一樣,只是它需要的參數是個j avascript對象,如:

    DWRUtil.setValues({
    ?div: "new div content",
    ?password: "1234567890"
    });



    DWRUtil.toDescriptiveString

    帶debug信息的toString,第一個為將要debug的對象,第二個參數為處理等級。等級如下:

    0: Single line of debug 單行調試
    1: Multi-line debug that does not dig into child objects 不分析子元素的多行調試
    2: Multi-line debug that digs into the 2nd layer of child objects 最多分析到第二層子元素的多行調試
    And so on. Level 2 and greater probably produce too much output.

    總結:DWR不但屏蔽了許多client與server交互的重復且復雜的代碼,而且還提供了一些常用的方法,一些思想還是從prototype繼承而來,并有一定的改進。同時,它也考慮到了與struts、hibernate、spring的結合問題。

    需要注意的是,DWR是一種把服務器端的java代碼通過j avascript直接從瀏覽器調用的方法(DWR is a way of calling Java code on the server directly from Javascript in the browser.),而不是一個j avascript的庫(Generally speaking DWR is not a generic JavaScript library so it does not attempt to provide fill this need. However this is one of these really useful functions to have around if you are doing Ajax work.)能做到怎么多,已經很難得了。

    DWR自04年11月草案提出到現在的Version 1.1 beta 3(2005-12-29),已經更新發布了20多次了,但愿在ajax的發展大路上,能始終看見DWR的身影。
    引自:http://www.bestunix.net/index.php

    posted on 2006-12-26 09:13 java_蟈蟈 閱讀(1492) 評論(0)  編輯  收藏 所屬分類: OPEN SOURCE
    主站蜘蛛池模板: 亚洲无人区码一二三码区别图片| 国产亚洲精品看片在线观看| 亚洲高清美女一区二区三区| a色毛片免费视频| 亚洲日韩小电影在线观看| 好湿好大好紧好爽免费视频| 青青草原亚洲视频| 在线免费视频你懂的| 亚洲精品乱码久久久久66| 久久这里只精品热免费99| 久久亚洲精品国产精品| 在线观看亚洲天天一三视| 国产精品青草视频免费播放| 在线观看亚洲av每日更新| a视频在线免费观看| 亚洲人成网www| 国色精品卡一卡2卡3卡4卡免费| 亚洲av无码久久忘忧草| 日本人的色道www免费一区| 免费播放国产性色生活片| 国产亚洲精久久久久久无码77777| 国产精品偷伦视频免费观看了| 亚洲精品无码久久久久去q| 一个人免费日韩不卡视频| 亚洲一区无码中文字幕乱码| 国产精品色午夜免费视频| 精品人妻系列无码人妻免费视频| 亚洲av无码一区二区三区不卡 | 国产色爽免费视频| 曰批全过程免费视频免费看| 亚洲精品无码永久在线观看你懂的 | 午夜亚洲国产成人不卡在线| 国产免费黄色无码视频| 亚洲人成在线电影| 国产精品无码素人福利免费| 男女一进一出抽搐免费视频| 亚洲成a人片在线观看播放| 全黄a免费一级毛片人人爱| 亚洲免费在线播放| 免费人成大片在线观看播放| 亚洲高清视频在线播放|