﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-刘文涛-随笔分类-DWR 2.0</title><link>http://www.blogjava.net/liuwentao253/category/14300.html</link><description>I am a coder</description><language>zh-cn</language><lastBuildDate>Fri, 02 Mar 2007 07:00:58 GMT</lastBuildDate><pubDate>Fri, 02 Mar 2007 07:00:58 GMT</pubDate><ttl>60</ttl><item><title>分析DWR util.js包</title><link>http://www.blogjava.net/liuwentao253/archive/2006/08/21/64797.html</link><dc:creator>刘文涛</dc:creator><author>刘文涛</author><pubDate>Mon, 21 Aug 2006 06:59:00 GMT</pubDate><guid>http://www.blogjava.net/liuwentao253/archive/2006/08/21/64797.html</guid><description><![CDATA[
		<p>
		</p>
		<p>先简单介绍一下什么是DWR</p>
		<p>DWR - Direct Web Remoting</p>
		<p>  ajax是一种提高web站点吸引力和实用性的书写web页面的方法。它<font color="#0000ff"><strong>从服务器端更新web页面的特殊区域</strong></font>，从而增强用户的交互性。它允许信息在短时间的延迟或不用刷新页面的情况下更新。</p>
		<p>  DWR减少了开发时间，也减少了一些可能的错误，这些错误是在提供常用的方法函数并消除一些与高交互性  web站点有关的重复性代码的时候产生的。</p>
		<p>  DWR是作为开源软件(ASL verssion 2.0)而可以免费得到的。它凭借它的广阔的库、例子和指南非常易于实现。把它结合到一个现有的站点是非常简单的，同样它也可以简单地与大多数java框架结合。 </p>
		<p>util.js<br />  util.js包含了一些使用的方法，从而帮助你利用javascript(可能)从服务器端更新你的web数据。</p>
		<p>  你可以在DWR之外的地方使用它，因为它并不依赖与DWR而实现。</p>
		<p>  它包含四个页面处理函数：</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080">
						<font style="BACKGROUND-COLOR: #eeeeee" color="#000000">1 getText()作用于select lists。<br />2 getValue[s]()、setValue[s]()作用于除tables、lists和images以外的大多数html元素。<br />3 addRows()和removeAllRows()用于编辑tables。<br />4 addOptions()和removeAllOptions()用于编辑lists(如：select lists、ul、ol)。 </font>
				</span>
		</div>
		<p>
				<br />$() ：<br /> $函数(在javascript中，他的名字是合法的)的思想是从prototype引进的。一般说来，$ = document.getElementById。在以后你花大量时间进行ajax编程的时候，在合适的地方使用这种格式是很有益的。</p>
		<p>  '$'通过给定的ID在当前HTML页面找到元素，如果多于一个的参数被提交，它就会返回一个包含已找到元素的数组。这个函数从prototype的library中得到的灵感，而且，它还能更好的工作在不同的浏览器中。 </p>
		<p>一  ：Generating Lists<br />DWR的一个功能可以给一个下拉列表(select list)添加选项，只需使用</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080">1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">DWRUtil.addOptions()</span>
		</div>
		<p>  如果你在更新列表之前，希望保留一些选项，你需要写以下一些代码：</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080">1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">var sel </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> DWRUtil.getValue(id);<br /></span>
				<span style="COLOR: #008080">2</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />DWRUtil.removeAllOptions(id);<br /></span>
				<span style="COLOR: #008080">3</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />DWRUtil.addOptions(id, <img src="http://www.blogjava.net/images/dot.gif" />);<br /></span>
				<span style="COLOR: #008080">4</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />DWRUtil.setValue(id, sel);</span>
		</div>
		<p>  如果你想有个初始化选项，如：“please select”，你可以直接使用：     </p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080">1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">DWRUtil.addOptions(id, [</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">Please select</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">]);</span>
		</div>
		<p>
				<br />二 ：DWRUtil.addOptions 有5种调用方法：<br /><br />1 ：Array: DWRUtil.addOptions(selectid, array) 。selectid为目标ID,array为每一项的text。</p>
		<p>2 ：Array of objects (option text = option value): <br />      DWRUtil.addOptions(selectid, data, prop) 用text和value的集合来为每一个数组元素创建一个选项，<br />      pro参数指定text和value的值。</p>
		<p>3：Array of objects (with differing option text and value): <br />      DWRUtil.addOptions(selectid, array, valueprop, textprop) 用text和value的集合来为每一个数组元素创建一个选项，<br />      valueprop确定value，textprop确定text。</p>
		<p>4：Object: DWRUtil.addOptions(selectid, map, reverse) 为map中每一个属性(property)创建一个选项，<br />      属性名作为选项的value，属性的value作为选项的text。这样做看起来是错的，但实际上这种做法的确是正确的。<br />      如果reverse参数被设置为true，则属性的value还是被用做选项的value。</p>
		<p>5：Map of objects: DWRUtil.addOptions(selectid, map, valueprop, textprop) 为map中的每一个对象创建一个选项，<br />      valueprop指定选项的value，textprop指定选项的text。</p>
		<p>
				<br />三 ：Generating Tables</p>
		<p>DWRUtil.addRows() 从一个数组(第二个参数)取得值，创建table的每一行。从另一个数组(第三个参数)去得值，为table的每一行创建若干列。</p>
		<p> </p>
		<p>四 ：DWRUtil.getText(id)</p>
		<p>可以根据id取得text的值，这个方法只能用于select list</p>
		<p>五 ：DWRUtil.getValue(id)</p>
		<p>可以根据id取得value，使用这个方法，你不必在意div和select list的不同。</p>
		<p>六 ：DWRUtil.getValues()</p>
		<p>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.</p>
		<p>这个方法和getValue()一样，只是它传入的是一个包含名字和数值的javascript对象.这个名字就是HTML元素的ID。这个方法不会返回任何对象，它只会将ID的value映射给传入的value。例：</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080"> 1</span>
				<img id="Codehighlighter1_23_155_Open_Image" onclick="this.style.display='none'; Codehighlighter1_23_155_Open_Text.style.display='none'; Codehighlighter1_23_155_Closed_Image.style.display='inline'; Codehighlighter1_23_155_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
				<img id="Codehighlighter1_23_155_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_23_155_Closed_Text.style.display='none'; Codehighlighter1_23_155_Open_Image.style.display='inline'; Codehighlighter1_23_155_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				<span style="COLOR: #000000">function doGetValues() </span>
				<span id="Codehighlighter1_23_155_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_23_155_Open_Text">
						<span style="COLOR: #000000">{<br /></span>
						<span style="COLOR: #008080"> 2</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />      var text</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">{</span>
						<span style="COLOR: #000000">
								<br />
						</span>
						<span style="COLOR: #008080"> 3</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">      div:</span>
						<span style="COLOR: #0000ff">null</span>
						<span style="COLOR: #000000">,<br /></span>
						<span style="COLOR: #008080"> 4</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />      textarea:</span>
						<span style="COLOR: #0000ff">null</span>
						<span style="COLOR: #000000">,<br /></span>
						<span style="COLOR: #008080"> 5</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />      select:</span>
						<span style="COLOR: #0000ff">null</span>
						<span style="COLOR: #000000">,<br /></span>
						<span style="COLOR: #008080"> 6</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />      text:</span>
						<span style="COLOR: #0000ff">null</span>
						<span style="COLOR: #000000">,<br /></span>
						<span style="COLOR: #008080"> 7</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />      password:</span>
						<span style="COLOR: #0000ff">null</span>
						<span style="COLOR: #000000">,<br /></span>
						<span style="COLOR: #008080"> 8</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />      formbutton:</span>
						<span style="COLOR: #0000ff">null</span>
						<span style="COLOR: #000000">,<br /></span>
						<span style="COLOR: #008080"> 9</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />      button:</span>
						<span style="COLOR: #0000ff">null</span>
						<span style="COLOR: #000000">
								<br />
						</span>
						<span style="COLOR: #008080">10</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">11</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">12</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">javascript对象</span>
				<span style="COLOR: #008000">
						<br />
				</span>
				<span style="COLOR: #008080">13</span>
				<span style="COLOR: #008000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">var object </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> objectEval(text);   <br /></span>
				<span style="COLOR: #008080">14</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />DWRUtil.getValues(object);<br /></span>
				<span style="COLOR: #008080">15</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">toString</span>
				<span style="COLOR: #008000">
						<br />
				</span>
				<span style="COLOR: #008080">16</span>
				<span style="COLOR: #008000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">var reply </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> DWRUtil.toDescriptiveString(object, </span>
				<span style="COLOR: #000000">2</span>
				<span style="COLOR: #000000">); <br /></span>
				<span style="COLOR: #008080">17</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">转意</span>
				<span style="COLOR: #008000">
						<br />
				</span>
				<span style="COLOR: #008080">18</span>
				<span style="COLOR: #008000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">reply </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> reply.replace(</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">\n</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">g, </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;br/&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);   <br /></span>
				<span style="COLOR: #008080">19</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">显示</span>
				<span style="COLOR: #008000">
						<br />
				</span>
				<span style="COLOR: #008080">20</span>
				<span style="COLOR: #008000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">DWRUtil.setValue(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">getvaluesret</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">, reply);                    <br /></span>
				<span style="COLOR: #008080">21</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
				</span>
				<span style="COLOR: #008080">22</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />}</span>
		</div>
		<p>
				<br />七 ：DWRUtil.onReturn</p>
		<p>贴一段代码，暂时不理解，用onReturn和不用有什么区别</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080"> 1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">script</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080"> 2</span>
				<span style="COLOR: #000000">
						<img id="Codehighlighter1_35_126_Open_Image" onclick="this.style.display='none'; Codehighlighter1_35_126_Open_Text.style.display='none'; Codehighlighter1_35_126_Closed_Image.style.display='inline'; Codehighlighter1_35_126_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_35_126_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_35_126_Closed_Text.style.display='none'; Codehighlighter1_35_126_Open_Image.style.display='inline'; Codehighlighter1_35_126_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /> function submitFunction()</span>
				<span id="Codehighlighter1_35_126_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_35_126_Open_Text">
						<span style="COLOR: #000000">{<br /></span>
						<span style="COLOR: #008080"> 3</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     $(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">alert</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">).style.display </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">inline</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">;<br /></span>
						<span style="COLOR: #008080"> 4</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     setTimeout(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">unsubmitFunction();</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">, </span>
						<span style="COLOR: #000000">1000</span>
						<span style="COLOR: #000000">);<br /></span>
						<span style="COLOR: #008080"> 5</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /> }</span>
				</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080"> 6</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
				</span>
				<span style="COLOR: #008080"> 7</span>
				<span style="COLOR: #000000">
						<img id="Codehighlighter1_157_200_Open_Image" onclick="this.style.display='none'; Codehighlighter1_157_200_Open_Text.style.display='none'; Codehighlighter1_157_200_Closed_Image.style.display='inline'; Codehighlighter1_157_200_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_157_200_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_157_200_Closed_Text.style.display='none'; Codehighlighter1_157_200_Open_Image.style.display='inline'; Codehighlighter1_157_200_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /> function unsubmitFunction()</span>
				<span id="Codehighlighter1_157_200_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_157_200_Open_Text">
						<span style="COLOR: #000000">{<br /></span>
						<span style="COLOR: #008080"> 8</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     $(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">alert</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">).style.display </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">none</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">;<br /></span>
						<span style="COLOR: #008080"> 9</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /> }</span>
				</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">10</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">script</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">11</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
				</span>
				<span style="COLOR: #008080">12</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">p</span>
				<span style="COLOR: #000000">&gt;&lt;</span>
				<span style="COLOR: #000000">input type</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">text</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> onkeydown</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">DWRUtil.onReturn(event, submitFunction)</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">13</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">input type</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">button</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> onclick</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">submitFunction()</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> value</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">GO</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">14</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">span id</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">alert</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> style</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">display:none; background:#FFFFDD; font-weight:bold;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">submitFunction called</span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">span</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">15</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">p</span>
				<span style="COLOR: #000000">&gt;</span>
		</div>
		<p> </p>
		<p>八 ：DWRUtil.selectRange</p>
		<p>         在一个input box里选一个范围</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080">1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">DWRUtil.selectRange(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">sel-test</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">, $(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">start</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">).value, $(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">end</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">).value);</span>
		</div>
		<p>
				<br />九 ：DWRUtil.setValue(id, value)</p>
		<p>         用ID找到元素，并更新value</p>
		<p>十 ：DWRUtil.setValues()</p>
		<p>        和setValue(id,value)一样，只是它需要的参数是个javascript对象，如：</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080">1</span>
				<img id="Codehighlighter1_18_71_Open_Image" onclick="this.style.display='none'; Codehighlighter1_18_71_Open_Text.style.display='none'; Codehighlighter1_18_71_Closed_Image.style.display='inline'; Codehighlighter1_18_71_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
				<img id="Codehighlighter1_18_71_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_18_71_Closed_Text.style.display='none'; Codehighlighter1_18_71_Open_Image.style.display='inline'; Codehighlighter1_18_71_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				<span style="COLOR: #000000">DWRUtil.setValues(</span>
				<span id="Codehighlighter1_18_71_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_18_71_Open_Text">
						<span style="COLOR: #000000">{<br /></span>
						<span style="COLOR: #008080">2</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  div: </span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">new div content</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">,<br /></span>
						<span style="COLOR: #008080">3</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  password: </span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">1234567890</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">
								<br />
						</span>
						<span style="COLOR: #008080">4</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">);</span>
		</div>
		<p>
				<br />十一 ：DWRUtil.toDescriptiveString</p>
		<p>带debug信息的toString，第一个为将要debug的对象，第二个参数为处理等级。等级如下：</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080">1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">: Single line of debug 单行调试 <br /></span>
				<span style="COLOR: #008080">2</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">1</span>
				<span style="COLOR: #000000">: Multi</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">line debug that does not dig into child objects 不分析子元素的多行调试 <br /></span>
				<span style="COLOR: #008080">3</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">2</span>
				<span style="COLOR: #000000">: Multi</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">line debug that digs into the 2nd layer of child objects 最多分析到第二层子元素的多行调试 </span>
		</div>
		<p>And so on. Level 2 and greater probably produce too much output. <br /> </p>
		<p>总结：DWR不但屏蔽了许多client与server交互的重复且复杂的代码，而且还提供了一些常用的方法，一些思想还是从prototype</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">Prototype.js作为javascript的成功的开源框架,封装了很多好用的功能</span>
		</div>
		<p>继承而来，并有一定的改进。同时，它也考虑到了与struts、hibernate、spring的结合问题。</p>
		<p>需要注意的是，DWR是一种把服务器端的java代码通过javascript直接从浏览器调用的方法(DWR is a way of calling Java code on the server directly from Javascript in the browser.)，而不是一个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.)能做到这么多，已经很难得了。</p>
		<p>DWR自04年11月草案提出到现在的Version 1.1 beta 3(2005-12-29)，已经更新发布了20多次了，但愿在ajax的发展大路上，能始终看见DWR的身影。<br /></p>
<img src ="http://www.blogjava.net/liuwentao253/aggbug/64797.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuwentao253/" target="_blank">刘文涛</a> 2006-08-21 14:59 <a href="http://www.blogjava.net/liuwentao253/archive/2006/08/21/64797.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DWR学习</title><link>http://www.blogjava.net/liuwentao253/archive/2006/08/21/64731.html</link><dc:creator>刘文涛</dc:creator><author>刘文涛</author><pubDate>Mon, 21 Aug 2006 02:48:00 GMT</pubDate><guid>http://www.blogjava.net/liuwentao253/archive/2006/08/21/64731.html</guid><description><![CDATA[
		<p> DWR(<font color="#0000ff"><strong>Direct Web Remoting</strong></font>) 是符合Apache license的一个Ajax开源框架，具有一套较为强大的Javascript功能库，让Ajax的开发更加方便快捷。<br /><br />DWR1.x可以在Javascript里异步调用Java代码，并通过callback function来获得从服务器传回的数据。<br /><br />DWR2.0一个最新的feature是Reverse Ajax，允许在Java类里异步调用Javascript，这使得开发交互式应用程序更加方便。<br />　　<br />一直在用DWR，DWR2.0的new feature让我兴奋了很长一段时间，Upgrade到DWR2.0后，Javascript代码又大量的减少，而且再不用写难看的要死的callback function。Thanks <font color="#0000ff"><strong>Joe Walker</strong></font>！<br /><br /><img src="http://getahead.ltd.uk/images/dwr-logo-200.gif" /><br /><br />DWR的logo是两个指向不同方向的蓝红箭头，寓意应该是javascript和java的<font color="#0000ff"><strong>双向异步交流</strong></font>，但是即使是在最新的稳定版本1.1.1中，也只是支持在javascript中异步的调用java，不得不说，这和它的最终目的还差很远。</p>
		<p>因此当2.0m1发布的时候，连DWR开发团队自己都很兴奋的说“This is probably the biggest release we've ever done in terms of new features”。是啊，我们终于看到另一个箭头啦～</p>
		<p>
				<br />1、Reverse Ajax<br />在服务器端通过Java异步调用JavaScript<br />适用情况：高交互性的网站<br />问题：可能要用到web 推技术保持Http的长连接，甚至要用到Jetty6的continuation！</p>
		<div class="postcontent">
				<p>2、Cross Domain Ajax: &lt;script&gt; tag manipulation<br />跨域执行脚本。双刃剑啊。</p>
				<p>3、The &lt;signatures&gt; Element<br />用了JDK5，则不需要在dwr.xml里配置这个了。整个世界清静了。。。</p>
				<p>4、DWRUtil Updates</p>
				<p>5、New Attribute Scope - Script<br />类似于session的东东，不知道生命周期是否介于request和sesion之间，这样，是否代替了continuation？待考证。</p>
				<p>6、Examples<br />终于把例子整理到发布包了！dwr也有了自己的"PetStore"了！</p>
				<p>7、Refactoring<br />uk.ltd.getahead.dwr.* ---&gt;&gt;&gt; org.directwebremoting.*<br />早该如此:)</p>
				<p>8、Call Meta-data</p>
				<p>客户端：<br />Remote.getData(42, {<br />  callback:function(str) { alert(str); },<br />  customKey:"Fred",<br />});</p>
				<p>服务器端：<br />WebContextFactory.get().getHttpServletRequest().getAttribute("customKey");</p>
				<p>思考：<br />基于JS的annotation，何时才会有？</p>
				<p>9、Other Stuff - removed deprecated.js<br />no care~</p>
				<p>10、Security and Stability<br />JS的安全问题，的确是个问题。。。<br />其实，JS有很多自身加密的算法。。。<br /><br />更多信息：<br /><a href="http://getahead.ltd.uk/dwr/changelog/dwr20m1">http://getahead.ltd.uk/dwr/changelog/dwr20m1</a></p>
		</div>
		<p>
				<br /> </p>
<img src ="http://www.blogjava.net/liuwentao253/aggbug/64731.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuwentao253/" target="_blank">刘文涛</a> 2006-08-21 10:48 <a href="http://www.blogjava.net/liuwentao253/archive/2006/08/21/64731.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于DWR2.0的配置</title><link>http://www.blogjava.net/liuwentao253/archive/2006/08/21/64699.html</link><dc:creator>刘文涛</dc:creator><author>刘文涛</author><pubDate>Mon, 21 Aug 2006 00:52:00 GMT</pubDate><guid>http://www.blogjava.net/liuwentao253/archive/2006/08/21/64699.html</guid><description><![CDATA[最新的DWR2.0M2版本。2.0加了很多东西，也有不少变化的地方。最容易看到的变化就是包名的变化了,由 uk.ltd.getahead 变成了 org.directwebremoting 。<br />        换上了新的配置<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">servlet</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">servlet</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">name</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">dwr</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">invoker</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">servlet</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">name</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">3</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">servlet</span><span style="COLOR: #000000">-</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">org.directwebremoting.servlet.DwrServlet</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">servlet</span><span style="COLOR: #000000">-</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">4</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">init</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">param</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">5</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">param</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">name</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">debug</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">param</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">name</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">6</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">param</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">value</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">param</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">value</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">7</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">init</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">param</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">8</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">load</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">on</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">startup</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">load</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">on</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">startup</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">9</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">servlet</span><span style="COLOR: #000000">&gt;</span></div><br />启动服务，抱错了。<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">java.lang.IllegalArgumentException: DefaultContainer can</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">t find a classes</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">       at org.directwebremoting.impl.DefaultContainer.getBean(DefaultContainer.java:</span><span style="COLOR: #000000">216</span><span style="COLOR: #000000">)<br /></span><span style="COLOR: #008080">3</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />       at org.directwebremoting.annotations.AnnotationsConfigurator.configure(AnnotationsConfigurator.java:</span><span style="COLOR: #000000">50</span><span style="COLOR: #000000">)<br /></span><span style="COLOR: #008080">4</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />       at org.directwebremoting.servlet.DwrServlet.init(DwrServlet.java:</span><span style="COLOR: #000000">121</span><span style="COLOR: #000000">)</span></div><br />在DWR的Maillist里面搜索了一下，还有答案，原来DWR2.0 加入了JDK5的注释(annotations).DwrServlet初始化的时候会去检查注释的类，找不到就抱错了。如果你不用annotations也可以忽略掉这个错误。不过看起来总是不爽。有人提出了方案。这样就ok了。<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"> 1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">servlet</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">servlet</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">name</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">dwr</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">invoker</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">servlet</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">name</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">servlet</span><span style="COLOR: #000000">-</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">org.directwebremoting.servlet.DwrServlet</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">servlet</span><span style="COLOR: #000000">-</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">init</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">param</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">param</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">name</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">debug</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">param</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">name</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">param</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">value</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">param</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">value</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">init</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">param</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">init</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">param</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />       </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">param</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">name</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">classes</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">param</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">name</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />       </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">param</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">value</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">java.lang.Object</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">param</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">value</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">init</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">param</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">load</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">on</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">startup</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">load</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">on</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">startup</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">servlet</span><span style="COLOR: #000000">&gt;</span></div><img src ="http://www.blogjava.net/liuwentao253/aggbug/64699.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuwentao253/" target="_blank">刘文涛</a> 2006-08-21 08:52 <a href="http://www.blogjava.net/liuwentao253/archive/2006/08/21/64699.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>