??xml version="1.0" encoding="utf-8" standalone="yes"?>久久久久五月天,中文字幕一区二区三区欧美日韩,在线成人超碰http://www.aygfsteel.com/Crying/category/25560.htmlZ自己zh-cnThu, 13 Sep 2007 08:50:26 GMTThu, 13 Sep 2007 08:50:26 GMT60DWR 实现联动下拉列表http://www.aygfsteel.com/Crying/articles/144828.htmlCryingCryingThu, 13 Sep 2007 05:16:00 GMThttp://www.aygfsteel.com/Crying/articles/144828.htmlhttp://www.aygfsteel.com/Crying/comments/144828.htmlhttp://www.aygfsteel.com/Crying/articles/144828.html#Feedback0http://www.aygfsteel.com/Crying/comments/commentRss/144828.htmlhttp://www.aygfsteel.com/Crying/services/trackbacks/144828.html 记得dwr.jar要加入到WEB-INF/lib
在WEB.XML中加?br />

<servlet>
  <servlet-name>dwr-invoker</servlet-name>
  <servlet-class>
   org.directwebremoting.servlet.DwrServlet
  </servlet-class>
  <init-param>
   <param-name>debug</param-name>
   <param-value>true</param-value>
  </init-param>
 </servlet>

 <servlet-mapping>
  <servlet-name>dwr-invoker</servlet-name>
  <url-pattern>/dwr/*</url-pattern>
 </servlet-mapping>

首先写个JS要调用的c?br /> package wsq;

import java.util.HashMap;

public class Data {
 private HashMap<String, String[ ]> address;
 
 
 public Data() {
  address= new HashMap<String, String[]>( );
  address.put("--请选择--", new String[] { "--请选择--" });
  address.put("安徽", new String[] { "合肥", "安庆", "qd" });
  address.put("江", new String[] { "杭州", "湖州" });
  address.put("江苏", new String[] { "南京", "苏州", "无锡" });
  address.put("江西", new String[] { "南昌" });
  address.put("q东", new String[] { "q州", "韶关", "白云" });

 }

 public String[] getYears() {

  String[] keys = new String[address.size()];
  int i = 0;
  for (String key : address.keySet()) {
   keys[i++] = key;
  }
  return keys;
 }

 public String[] getAddress(String year) {
  return address.get(year);
 }
}
dwr.xml 的内容如下:

<!DOCTYPE dwr PUBLIC
    "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
    "http://www.getahead.ltd.uk/dwr/dwr20.dtd">

<dwr>
 <allow> 
  <create creator="new"  javascript="Address" >
  <param name="class" value="wsq.Data"></param>
  </create>
 </allow>
</dwr>



jsp 面

<%@ page language="java" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
  <title>list.jsp</title>
  <script type="text/javascript" src="/dwr_1/dwr/interface/Address.js"></script>
  <script type="text/javascript" src="/dwr_1/dwr/util.js"></script>
  <script type="text/javascript" src="/dwr_1/dwr/engine.js"></script>
  <script type="text/javascript">
   function getYears()
   {
     Address.getYears(callbackYear);
   
   }
   function callbackYear(data)
   {    
      DWRUtil.addOptions("oid2",["--请选择--"]);  
      DWRUtil.removeAllOptions("oid1");
      DWRUtil.addOptions("oid1", data);
 
   }
    function changYear()
   {
     var year = $("oid1").value;    
     Address.getAddress(year,callback1);
   
   }
   function callback1(data)
   {
     DWRUtil.removeAllOptions("oid2");
     DWRUtil.addOptions("oid2", data);
  
   }
 
   </script>
 </head>

 <body onload="getYears()" >
  <select id="oid1" onchange="changYear()" >

  </select>
  <select id="oid2" >

  </select>
  
 </body>
</html>


 



Crying 2007-09-13 13:16 发表评论
]]>
DWR Util.jshttp://www.aygfsteel.com/Crying/articles/144820.htmlCryingCryingThu, 13 Sep 2007 05:03:00 GMThttp://www.aygfsteel.com/Crying/articles/144820.htmlhttp://www.aygfsteel.com/Crying/comments/144820.htmlhttp://www.aygfsteel.com/Crying/articles/144820.html#Feedback0http://www.aygfsteel.com/Crying/comments/commentRss/144820.htmlhttp://www.aygfsteel.com/Crying/services/trackbacks/144820.htmldwr官方地址Q?a >http://getahead.ltd.uk/dwr
先简单介l一下什么是DWR
DWR - Direct Web Remoting
  ajax是一U提高web站点吸引力和实用性的书写web面的方法。它从服务器端更新web面的特D区域,从而增强用L(fng)交互性。它允许信息在短旉的gq或不用h面的情况下更新?/span>
  DWR减少了开发时_也减了一些可能的错误Q这些错误是在提供常用的Ҏ(gu)函数q消除一些与高交互性web站点有关的重复性代码的时候生的?/span>
  DWR是作为开源Y?ASL verssion 2.0)而可以免费得到的。它凭借它的广阔的库、例子和指南非常易于实现。把它结合到一个现有的站点是非常简单的Q同样它也可以简单地与大多数java框架l合?/span>
 
util.js
  util.js包含了一些用的Ҏ(gu)Q从而帮助你利用javascript(可能)从服务器端更C的web数据?/span>
  你可以在DWR之外的地方用它Q因为它q不依赖与DWR而实现?/span>
  它包含四个页面处理函敎ͼgetValue[s]()、setValue[s]()作用于除tables、lists和images以外的大多数html元素。getText()作用于select lists?/span>
  addRows()和removeAllRows()用于~辑tables。addOptions()和removeAllOptions()用于~辑lists(如:select lists、ul、ol)?/span>
$()
  $函数(在javascript中,他的名字是合法的)的思想是从prototype引进的。一般说来,$ = document.getElementById。在以后你花大量旉q行ajax~程的时候,在合适的地方使用q种格式是很有益的?/span>
  '$'通过l定的ID在当前HTML面扑ֈ元素Q如果多于一个的参数被提交,它就会返回一个包含已扑ֈ元素的数l。这个函Cprototype的library中得到的灉|Q而且Q它q能更好的工作在不同的浏览器中?/span>
 
Generating Lists
  DWR的一个功能可以给一个下拉列?select list)d选项Q只需使用DWRUtil.addOptions()?/span>
  如果你在更新列表之前Q希望保留一些选项Q你需要写以下一些代码:
      var sel = DWRUtil.getValue(id);
      DWRUtil.removeAllOptions(id);
      DWRUtil.addOptions(id, ...);
      DWRUtil.setValue(id, sel);
  如果你想有个初始化选项Q如Q?#8220;please select”Q你可以直接使用Q?/span>
      DWRUtil.addOptions(id, ["Please select"]);
DWRUtil.addOptions ?U调用方法:
Array: DWRUtil.addOptions(selectid, array) 。selectid为目标ID,array为每一的text?/span>
Array of objects (option text = option value): DWRUtil.addOptions(selectid, data, prop) 用text和value的集合来为每一个数l元素创Z个选项Qpro参数指定text和value的倹{?/span>
Array of objects (with differing option text and value): DWRUtil.addOptions(selectid, array, valueprop, textprop) 用text和value的集合来为每一个数l元素创Z个选项Qvalueprop定valueQtextprop定text?/span>
Object: DWRUtil.addOptions(selectid, map, reverse) 为map中每一个属?property)创徏一个选项Q属性名作ؓ选项的valueQ属性的value作ؓ选项的text。这样做看v来是错的Q但实际上这U做法的是正确的。如果reverse参数被设|ؓtrueQ则属性的valueq是被用做选项的value?/span>
Map of objects: DWRUtil.addOptions(selectid, map, valueprop, textprop) 为map中的每一个对象创Z个选项Qvalueprop指定选项的valueQtextprop指定选项的text?/span>
 
Generating Tables
DWRUtil.addRows() 从一个数l?W二个参?取得|创徏table的每一行。从另一个数l?W三个参?d|为table的每一行创q列?/span>
 
DWRUtil.getText(id)
可以Ҏ(gu)id取得text的|q个Ҏ(gu)只能用于select list
DWRUtil.getValue(id)
可以Ҏ(gu)id取得valueQ用这个方法,你不必在意div和select list的不同?/span>
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.
q个Ҏ(gu)和getValue()一P只是它传入的是一个包含名字和数值的javascript对象.q个名字是HTML元素的ID。这个方法不会返回Q何对象,它只会将ID的value映射l传入的value。例Q?/span>
function doGetValues() {
  var text= "{
  div:null,
  textarea:null,
  select:null,
  text:null,
  password:null,
  formbutton:null,
  button:null
}";
  var object = objectEval(text);    //javascript对象
  DWRUtil.getValues(object);
  var reply = DWRUtil.toDescriptiveString(object, 2);   //toString
  reply = reply.replace(/\n/g, "<br/>");                        //转意
  DWRUtil.setValue("getvaluesret", reply);                     //昄
}
 
DWRUtil.onReturn
贴一D代码,暂时不理解,用onReturn和不用有什么区?/span>
<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里选一个范?/span>
DWRUtil.selectRange("sel-test", $("start").value, $("end").value);
 
DWRUtil.setValue(id, value)
用ID扑ֈ元素Qƈ更新value
DWRUtil.setValues()
和setValue(id,value)一P只是它需要的参数是个javascript对象Q如Q?/span>
DWRUtil.setValues({
  div: "new div content",
  password: "1234567890"
});
 
DWRUtil.toDescriptiveString
带debug信息的toStringQ第一个ؓ要debug的对象,W二个参Cؓ处理{。等U如下:
· 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 最多分析到W二层子元素的多行调?
· And so on. Level 2 and greater probably produce too much output.
 
ȝQDWR不但屏蔽了许多client与server交互的重复且复杂的代码,而且q提供了一些常用的Ҏ(gu)Q一些思想q是从prototypel承而来Qƈ有一定的改进。同Ӟ它也考虑C与struts、hibernate、spring的结合问题?/span>
需要注意的是,DWR是一U把服务器端的java代码通过javascript直接从浏览器调用的方?DWR isa way of calling Java code on the server directly from Javascript in the browser.)Q而不是一个javascript的库(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.)能做到怎么多,已经很难得了?/span>
DWR?4q?1月草案提出到现在的Version 1.1 beta 3(2005-12-29)Q已l更新发布了20多次了,但愿在ajax的发展大路上Q能始终看见DWR的n影?/span>


Crying 2007-09-13 13:03 发表评论
]]>
什么是DWR (转http://blog.sina.com.cn/s/blog_44b925cd010007p3.html)http://www.aygfsteel.com/Crying/articles/142564.htmlCryingCryingTue, 04 Sep 2007 03:24:00 GMThttp://www.aygfsteel.com/Crying/articles/142564.htmlhttp://www.aygfsteel.com/Crying/comments/142564.htmlhttp://www.aygfsteel.com/Crying/articles/142564.html#Feedback0http://www.aygfsteel.com/Crying/comments/commentRss/142564.htmlhttp://www.aygfsteel.com/Crying/services/trackbacks/142564.htmlDWR是Direct Web Remoting 的羃写?br />
DWR 是一个开放源码的使用 Apache 许可协议的解x案,它包含服务器?Java 库、一?DWR servlet 以及 JavaScript 库。虽?DWR 不是 Java q_上唯一可用?Ajax-RPC 工具包,但是它是最成熟的,而且提供了许多有用的功能?br /> 从最单的角度来说QDWR 是一个引擎,可以把服务器?Java 对象的方法公开l?JavaScript 代码。?DWR 可以有效C应用E序代码中把 Ajax 的全部请?响应循环消除掉。这意味着客户端代码再也不需要直接处?XMLHttpRequest 对象或者服务器的响应。不再需要编写对象的序列化代码或者用第三方工具才能把对象变?XML。甚至不再需要编?servlet 代码?Ajax h调整成对 Java 域对象的调用?br /> DWR 是作?Web 应用E序中的 servlet 部v的。把它看作一个黑盒子Q这?servlet 有两个主要作用:首先Q对于公开的每个类QDWR 动态地生成包含?Web 面中的 JavaScript。生成的 JavaScript 包含存根函数Q代?Java cM的对应方法ƈ在幕后执?XMLHttpRequest。这些请求被发送给 DWRQ这时它的第二个作用是把请求翻译成服务器端 Java 对象上的Ҏ(gu)调用q把Ҏ(gu)的返回值放?servlet 响应中发送回客户端,~码?JavaScript。DWR q提供了帮助执行常见的用L(fng)面Q务的 JavaScript 工具函数?/div>
 
util.js  util.js包含了一些用的Ҏ(gu)Q从而帮助你利用j avascript(可能)从服务器端更C的web数据?/div>
 你可以在DWR之外的地方用它Q因为它q不依赖与DWR而实现?/div>
 它包含四个页面处理函敎ͼgetValue[s]()、setValue[s]()作用于除tables、lists和images以外的大多数html元素。getText()作用于select lists?/div>
 addRows()和removeAllRows()用于~辑tables。addOptions()和removeAllOptions()用于~辑lists(如:select lists、ul、ol)?/div>
$()
 $函数(在j avascript中,他的名字是合法的)的思想是从prototype引进的。一般说来,$ = document.getElementById。在以后你花大量旉q行ajax~程的时候,在合适的地方使用q种格式是很有益的?/div>
 '$'通过l定的ID在当前HTML面扑ֈ元素Q如果多于一个的参数被提交,它就会返回一个包含已扑ֈ元素的数l。这个函Cprototype的library中得到的灉|Q而且Q它q能更好的工作在不同的浏览器中?/div>
 
Generating Lists
 DWR的一个功能可以给一个下拉列?select list)d选项Q只需使用DWRUtil.addOptions()?/div>
 如果你在更新列表之前Q希望保留一些选项Q你需要写以下一些代码:
     var sel = DWRUtil.getValue(id);
     DWRUtil.removeAllOptions(id);
     DWRUtil.addOptions(id, ...);
     DWRUtil.setValue(id, sel);
 如果你想有个初始化选项Q如Q?#8220;please select”Q你可以直接使用Q?/div>
     DWRUtil.addOptions(id, ["Please select"]);
DWRUtil.addOptions ?U调用方法:Array: DWRUtil.addOptions(selectid, array) 。selectid为目标ID,array为每一的text?/div>
Array of objects (option text = option value): DWRUtil.addOptions(selectid, data, prop) 用text和value的集合来为每一个数l元素创Z个选项Qpro参数指定text和value的倹{?/div>
Array of objects (with differing option text and value): DWRUtil.addOptions(selectid, array, valueprop, textprop) 用text和value的集合来为每一个数l元素创Z个选项Qvalueprop定valueQtextprop定text?/div>
Object: DWRUtil.addOptions(selectid, map, reverse) 为map中每一个属?property)创徏一个选项Q属性名作ؓ选项的valueQ属性的value作ؓ选项的text。这样做看v来是错的Q但实际上这U做法的是正确的。如果reverse参数被设|ؓtrueQ则属性的valueq是被用做选项的value?/div>
Map of objects: DWRUtil.addOptions(selectid, map, valueprop, textprop) 为map中的每一个对象创Z个选项Qvalueprop指定选项的valueQtextprop指定选项的text?/div>
 
Generating Tables
DWRUtil.addRows() 从一个数l?W二个参?取得|创徏table的每一行。从另一个数l?W三个参?d|为table的每一行创q列?/div>
 
DWRUtil.getText(id)
可以Ҏ(gu)id取得text的|q个Ҏ(gu)只能用于select list
DWRUtil.getValue(id)
可以Ҏ(gu)id取得valueQ用这个方法,你不必在意div和select list的不同?/div>
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.
q个Ҏ(gu)和getValue()一P只是它传入的是一个包含名字和数值的j avascript对象.q个名字是HTML元素的ID。这个方法不会返回Q何对象,它只会将ID的value映射l传入的value。例Q?/div>
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
贴一D代码,暂时不理解,用onReturn和不用有什么区?/div>
<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里选一个范?/div>
DWRUtil.selectRange("sel-test", $("start").value, $("end").value);
 
DWRUtil.setValue(id, value)
用ID扑ֈ元素Qƈ更新value
DWRUtil.setValues()
和setValue(id,value)一P只是它需要的参数是个j avascript对象Q如Q?/div>
DWRUtil.setValues({ 
 div: "new div content",
 password: "1234567890"
});
 
DWRUtil.toDescriptiveString
带debug信息的toStringQ第一个ؓ要debug的对象,W二个参Cؓ处理{。等U如下:
0: Single line of debug 单行调试 
1: Multi-line debug that does not dig into child objects 不分析子元素的多行调?nbsp;
2: Multi-line debug that digs into the 2nd layer of child objects 最多分析到W二层子元素的多行调?nbsp;
And so on. Level 2 and greater probably produce too much output. 
ȝQDWR不但屏蔽了许多client与server交互的重复且复杂的代码,而且q提供了一些常用的Ҏ(gu)Q一些思想q是从prototypel承而来Qƈ有一定的改进。同Ӟ它也考虑C与struts、hibernate、spring的结合问题?/div>
需要注意的是,DWR是一U把服务器端的java代码通过j avascript直接从浏览器调用的方?DWR is a way of calling Java code on the server directly from Javascript in the browser.)Q而不是一个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.)能做到怎么多,已经很难得了?/div>
DWR?4q?1月草案提出到现在的Version 1.1 beta 3(2005-12-29)Q已l更新发布了20多次了,但愿在ajax的发展大路上Q能始终看见DWR的n影?/div>


Crying 2007-09-04 11:24 发表评论
]]> վ֩ģ壺 »| | ԭ| | | | | | ƽ| | | Ͽ| | | ֣| Ӧ| | | | ʡ| | ˺| | ղ| | ǫ| ĵ| | | | ͭ| ǿ| ¤| ϴ| | | ϼ| ũ| | | ݶ|