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

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

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

    我的Blog我做主^_^

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

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      64 隨筆 :: 68 文章 :: 77 評(píng)論 :: 0 Trackbacks
    DWR中的util.js
    1. $("id")?大概等價(jià)于document.getElementById("id") 如果返回結(jié)果唯一的話返回該元素的值,不唯一則返回一個(gè)數(shù)組 .另外,如果單獨(dú)使用util.js的話,可能在IE5以下的瀏覽器中無法正常使用,需要跟engine.js配合使用. 注意,這里得到的是一個(gè)對(duì)象,如果需要得到該對(duì)象的值的話,需要用innerHTML來取得.或者直接用DWRUtil.getValue("elementId")來取值.
    2. DWRUtil.toDescriptiveString("elementId",debugLevel),這是一個(gè)debug用的函數(shù).第一個(gè)參數(shù)是元素的id,第二個(gè)參數(shù)是debug等級(jí),可以是0,1,2.隨著等級(jí)增加,輸出信息也會(huì)增加.注意這個(gè)函數(shù)只是一個(gè)debug工具,不要對(duì)它抱有太大幻想.
    3. DWRUtil.getText("elementId"),返回一個(gè)select下拉菜單中的text值.僅適用于select類型的元素.
    4. DWRUtil.getValue("elementId"),返回一個(gè)元素的值,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
      }),返回一個(gè)對(duì)象包含這些元素的值,暫時(shí)不知道做什么用的.
    6. DWRUtil.onReturn(event, submitFunction) 定義在輸入框中按回車的響應(yīng),防止執(zhí)行submit.
    7. DWRUtil.addOptions() 一個(gè)重要的方法
    ?
    ?
    DWRUtil.getValues({
    ?div:null,
    ?textarea:null,
    ?select:null,
    ?text:null,
    ?password:null,
    ?formbutton:null,
    ?button:null
    })

    這個(gè)函數(shù)可以自動(dòng)取得頁面上指定ID的值,并且返回一個(gè),java中可以認(rèn)識(shí)的map(Hashtable或HashMap)值.下面是我測(cè)試示例;

    頁面:

    saveuser.htm

    <html>
    <head>
    <title>
    saveUser
    </title>
    <!--dwr/engine.js是dwr的核心引擎腳本處理客戶端調(diào)用的轉(zhuǎn)換-->
    <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包含了工具函數(shù)簡化頁面處理-->
    <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);
    第一個(gè)items,應(yīng)該是table的id,第2個(gè)items,是遠(yuǎn)程返回的結(jié)果集,cellFunctions,對(duì)表格行填充的回調(diào)函數(shù)一類的。

    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; }
    應(yīng)該是一個(gè)function(item)就代表一列,return的就是傳入的結(jié)果集的某列的內(nèi)容。那么這個(gè)表格就應(yīng)該有4列。最后一列是靜態(tài)的html代碼了。不過沒研究一下,return回去動(dòng)靜混合的內(nèi)容,就是一個(gè)字串會(huì)如何。我猜應(yīng)該也可以吧。

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

    DWR - Direct Web Remoting

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

    ?DWR減少了開發(fā)時(shí)間,也減少了一些可能的錯(cuò)誤,這些錯(cuò)誤是在提供常用的方法函數(shù)并消除一些與高交互性web站點(diǎn)有關(guān)的重復(fù)性代碼的時(shí)候產(chǎn)生的。

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



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

    ?你可以在DWR之外的地方使用它,因?yàn)樗⒉灰蕾嚺cDWR而實(shí)現(xiàn)。

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

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

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

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



    Generating Lists

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

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

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

    ?如果你想有個(gè)初始化選項(xiàng),如:“please select”,你可以直接使用:

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

    DWRUtil.addOptions 有5種調(diào)用方法:Array: DWRUtil.addOptions(selectid, array) 。selectid為目標(biāo)ID,array為每一項(xiàng)的text。

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

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

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

    Map of objects: DWRUtil.addOptions(selectid, map, valueprop, textprop) 為map中的每一個(gè)對(duì)象創(chuàng)建一個(gè)選項(xiàng),valueprop指定選項(xiàng)的value,textprop指定選項(xiàng)的text。



    Generating Tables

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



    DWRUtil.getText(id)

    可以根據(jù)id取得text的值,這個(gè)方法只能用于select list

    DWRUtil.getValue(id)

    可以根據(jù)id取得value,使用這個(gè)方法,你不必在意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.

    這個(gè)方法和getValue()一樣,只是它傳入的是一個(gè)包含名字和數(shù)值的j avascript對(duì)象.這個(gè)名字就是HTML元素的ID。這個(gè)方法不會(huì)返回任何對(duì)象,它只會(huì)將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對(duì)象
    ?DWRUtil.getValues(object);
    ?var reply = DWRUtil.toDescriptiveString(object, 2); ? //toString
    ?reply = reply.replace(/n/g, "<br/>"); ? ? ? ? ? ? ? ? ? ? ? ?//轉(zhuǎn)意
    ?DWRUtil.setValue("getvaluesret", reply); ? ? ? ? ? ? ? ? ? ? //顯示
    }



    DWRUtil.onReturn

    貼一段代碼,暫時(shí)不理解,用onReturn和不用有什么區(qū)別

    <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

    在一個(gè)input box里選一個(gè)范圍

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



    DWRUtil.setValue(id, value)

    用ID找到元素,并更新value

    DWRUtil.setValues()

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

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



    DWRUtil.toDescriptiveString

    帶debug信息的toString,第一個(gè)為將要debug的對(duì)象,第二個(gè)參數(shù)為處理等級(jí)。等級(jí)如下:

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

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

    需要注意的是,DWR是一種把服務(wù)器端的java代碼通過j avascript直接從瀏覽器調(diào)用的方法(DWR is a way of calling Java code on the server directly from Javascript in the browser.),而不是一個(gè)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.)能做到怎么多,已經(jīng)很難得了。

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

    posted on 2006-12-26 09:13 java_蟈蟈 閱讀(1492) 評(píng)論(0)  編輯  收藏 所屬分類: OPEN SOURCE
    主站蜘蛛池模板: 可以免费观看的一级毛片| 久久精品九九亚洲精品| 精品一卡2卡三卡4卡免费视频| 中文字幕免费在线视频| 久久精品亚洲综合| 免费爱爱的视频太爽了| 热99RE久久精品这里都是精品免费| 91午夜精品亚洲一区二区三区| 1a级毛片免费观看| 亚洲第一成年人网站| 国产又大又黑又粗免费视频 | 在免费jizzjizz在线播| 日韩国产欧美亚洲v片| 亚洲AV中文无码字幕色三| 成人毛片免费视频| 亚洲国产AV无码一区二区三区| 亚洲综合伊人久久大杳蕉| 国产综合免费精品久久久| 亚洲精品无码Av人在线观看国产| 免费无码作爱视频| 亚洲国产精品99久久久久久| 亚洲国产精品高清久久久| 免费国产黄网站在线观看| 免费一级特黄特色大片| 亚洲中文字幕人成乱码| 亚洲成av人影院| 亚洲精品成人区在线观看| 成人毛片18岁女人毛片免费看| 久久青草精品38国产免费| 免费精品国产自产拍在线观看| 亚洲香蕉在线观看| 一区二区三区亚洲视频| 成人性生交大片免费看好| 亚洲第一se情网站| 亚洲乱码中文字幕小综合| 亚洲国产精品va在线播放| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 亚洲综合激情五月丁香六月| 亚洲成A人片在线观看无码3D| 无码国产精品一区二区免费| 福利片免费一区二区三区|