﻿<?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-秋风的萧瑟 又见湖边木叶飞-随笔分类-JAVA</title><link>http://www.blogjava.net/lonleung/category/44557.html</link><description>欢迎来到梁良 | LonBlog，这里记录下了我生活点点滴滴。                                                              </description><language>zh-cn</language><lastBuildDate>Mon, 01 Sep 2014 19:21:33 GMT</lastBuildDate><pubDate>Mon, 01 Sep 2014 19:21:33 GMT</pubDate><ttl>60</ttl><item><title>Javascript和Ajax中文乱码吐血版解决方案 </title><link>http://www.blogjava.net/lonleung/archive/2014/08/27/417380.html</link><dc:creator>梁良</dc:creator><author>梁良</author><pubDate>Wed, 27 Aug 2014 00:22:00 GMT</pubDate><guid>http://www.blogjava.net/lonleung/archive/2014/08/27/417380.html</guid><wfw:comment>http://www.blogjava.net/lonleung/comments/417380.html</wfw:comment><comments>http://www.blogjava.net/lonleung/archive/2014/08/27/417380.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lonleung/comments/commentRss/417380.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lonleung/services/trackbacks/417380.html</trackback:ping><description><![CDATA[<span style="font-size: medium"><span style="font-size: small">&nbsp; 
<p><span style="font-size: medium"><span style="font-size: small">今天弄了一天的Ajax中文乱码问题，Ajax的乱码问题分为两种：</span></span></p>
<p><span style="font-size: medium"><span style="font-size: small"><span style="color: red">1. JavaScript输出的中文乱码，</span></span></span></p>
<p><span style="font-size: medium"><span style="font-size: small"><span style="color: red"><span style="font-size: medium"><span style="font-size: small">比如：alert("中文乱码测试");</span></span></span></span></span></p>
<p><span style="font-size: medium"><span style="font-size: small"><span style="color: red">2. 这第二种就是Ajax从服务器端获得的数据出现乱码的问题。（</span>我搜了n个小时试了n中方法才找到答案）</span></span></p>
<p><span style="font-size: medium"><span style="font-size: small">现在将我搜集的比较有效的方法都与大家分享：（我使用的开发环境是Eclipse，相信其他语言和开发环境都差不太多。）</span></span></p>
<p><span style="font-size: medium"><span style="font-size: small">&nbsp;比如</span></span></p>
<p><span style="font-size: medium">var message = xmlHttp.responseText;<br />&nbsp;alert("message: "+message);</span></p>
<p><span style="font-size: medium">获得这个message输出就是乱码</span></p>
<p><span style="font-size: medium">&nbsp;</span></p>
<p><span style="font-size: medium"><span style="font-size: small">解决办法有两种：</span></span></p></span></span>
<p>&nbsp;</p>
<p><span style="font-size: medium"><span style="font-size: small">（1）在jsp文件里引入js文件时可以这样写：&lt;script Charset="UTF-8" type="text/javascript" src="jslib/jquery-1.4.2.min.js"&gt;&lt;/script&gt;，该方法具有移植性</span></span></p>
<p>
<p><span style="font-size: medium"><span style="font-size: small"><span style="color: #000000">（2）（该方法可能会导致换一台电脑导入项目后js文件里中文会乱码）. 修改编码。切记要将代码备份一下，改了编码之后中文会变为乱码。</span></span></span></p>
<p><span style="color: #000000"><span style="font-size: medium"><span style="font-size: small">在js文件上右键点击Properties，最好是在菜单栏栏里选择Window--&gt;Perferences(以绝后患)，</span></span><span lang="EN-US"><span style="font-size: medium"><span style="font-size: small">修改Text file encode 为UTF-8（这里应当与jsp中的编码相同）</span></span></span><span style="font-size: medium"><span style="font-size: small">&nbsp;</span></span></span></p>
<p><span style="font-size: medium"><span style="font-size: small"><img border="0" src="http://images.cnblogs.com/cnblogs_com/dongritengfei/eclipse设置编码.jpg" width="677" height="765" jquery17037812708455093025="1"  alt="" />&nbsp;</span></span></p>
<p><span style="font-size: medium"><span style="font-size: small"><span style="color: #000000">同样的将JavaScript source file和JSP的Default encoding设置为UTF-8（这里应当与jsp中的编码相同，这样以后的项目就都是utf-8的编码了，推荐使用这个）</span></span></span></p>
<p><span style="font-size: medium"><span style="font-size: small"><span style="color: #000000">（2）. 注意response.setContentType("text/html;charset=utf-8");和PrintWriter out = response.getWriter();的位置关系，切记要将PrintWriter out = response.getWriter();放在response.setContentType("text/html;charset=utf-8");的后面，否则设置的编码将无效，这也是我弄了n久都搞不定的原因！！！</span></span></span></p>
<p><span lang="EN-US"><span style="font-size: medium"><span style="font-size: small">&nbsp;</span></span></span>&nbsp;</p>
<p><span lang="EN-US"><span style="font-size: medium"><span style="font-size: small"><span style="color: red">3. 客户端发给服务器端得中文数据为乱码</span></span></span></span></p>
<p>
<div><span lang="EN-US"><span style="font-size: medium">&nbsp;</span></span></div>
<p>&nbsp;</p><span lang="EN-US"><span style="font-size: medium">
<p>解决办法：示例：客户端的javaScript脚本</p></span></span>
<p>&nbsp;</p>
<p>function verify(){<br />&nbsp;&nbsp;&nbsp; $.get("AJAXServer?name="+<span style="color: red">encodeURI(</span><span style="color: red">encodeURI($("#userName").val())),</span>null,function callback(data){$("#result").html(data);});<br />}</p>
<p><span lang="EN-US"><span style="font-size: medium">﻿注意：<span style="color: red">encodeURI需要使用两次！</span></span></span></p>
<p>服务器端代码:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //1.取参数<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String&nbsp;str = request.getParameter("name");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str = java.net.URIDecode.decode(str,"UTF-8")&nbsp;</p><img src ="http://www.blogjava.net/lonleung/aggbug/417380.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lonleung/" target="_blank">梁良</a> 2014-08-27 08:22 <a href="http://www.blogjava.net/lonleung/archive/2014/08/27/417380.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>向DWR传递map/返回map</title><link>http://www.blogjava.net/lonleung/archive/2010/09/14/331941.html</link><dc:creator>梁良</dc:creator><author>梁良</author><pubDate>Mon, 13 Sep 2010 17:13:00 GMT</pubDate><guid>http://www.blogjava.net/lonleung/archive/2010/09/14/331941.html</guid><wfw:comment>http://www.blogjava.net/lonleung/comments/331941.html</wfw:comment><comments>http://www.blogjava.net/lonleung/archive/2010/09/14/331941.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lonleung/comments/commentRss/331941.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lonleung/services/trackbacks/331941.html</trackback:ping><description><![CDATA[<p><span style="width: 740px" id="articlecontent" onmouseup="NewHighlight(event)" class="wenzhang_con">&nbsp;
<div>1、调用没有返回值和参数的JAVA方法<br />
1.1、dwr.xml的配置<br />
&lt;dwr&gt;<br />
&lt;allow&gt;<br />
&lt;create creator="new" javascript="testClass" &gt;<br />
&lt;param name="class" value="com.dwr.TestClass" /&gt;<br />
&lt;include method="testMethod1"/&gt;<br />
&lt;/create&gt;<br />
&lt;/allow&gt;<br />
&lt;/dwr&gt;<br />
&lt;allow&gt;标签中包括可以暴露给javascript访问的东西。<br />
&lt;create&gt;标签中指定javascript中可以访问的java类，并定义DWR应当如何获得要进行远程的类的实例。creator="new"属性指定java类实例的生成方式，new意味着DWR应当调用类的默认构造函数来获得实例，其他的还有spring方式，通过与IOC容器Spring进行集成来获得实例等等。javascript=" testClass "属性指定javascript代码访问对象时使用的名称。<br />
&lt;param&gt;标签指定要公开给javascript的java类名。<br />
&lt;include&gt;标签指定要公开给javascript的方法。不指定的话就公开所有方法。<br />
&lt;exclude&gt;标签指定要防止被访问的方法。<br />
1.2、javascript中调用<br />
首先，引入javascript脚本<br />
&lt;script src=&#8216;dwr/interface/ testClass.js&#8216;&gt;&lt;/script&gt;<br />
&lt;script src=&#8216;dwr/engine.js&#8216;&gt;&lt;/script&gt;<br />
&lt;script src=&#8216;dwr/util.js&#8216;&gt;&lt;/script&gt;<br />
其中TestClass.js是dwr根据配置文件自动生成的，engine.js和util.js是dwr自带的脚本文件。<br />
其次，编写调用java方法的javascript函数<br />
Function callTestMethod1(){<br />
&nbsp; &nbsp;&nbsp; &nbsp;testClass.testMethod1();<br />
}<br />
2、调用有简单返回值的java方法<br />
2.1、dwr.xml的配置<br />
配置同1.1<br />
&lt;dwr&gt;<br />
&lt;allow&gt;<br />
&lt;create creator="new" javascript="testClass" &gt;<br />
&lt;param name="class" value="com.dwr.TestClass" /&gt;<br />
&lt;include method="testMethod2"/&gt;<br />
&lt;/create&gt;<br />
&lt;/allow&gt;<br />
&lt;/dwr&gt;<br />
2.2、javascript中调用<br />
首先，引入javascript脚本<br />
其次，编写调用java方法的javascript函数和接收返回值的回调函数<br />
Function callTestMethod2(){<br />
&nbsp; &nbsp;&nbsp; &nbsp;testClass.testMethod2(callBackFortestMethod2);<br />
}<br />
Function callBackFortestMethod2(data){<br />
&nbsp; &nbsp;&nbsp;&nbsp;//其中date接收方法的返回值<br />
&nbsp; &nbsp;&nbsp;&nbsp;//可以在这里对返回值进行处理和显示等等<br />
alert("the return value is " + data);<br />
}<br />
其中callBackFortestMethod2是接收返回值的回调函数<br />
3、调用有简单参数的java方法<br />
3.1、dwr.xml的配置<br />
配置同1.1<br />
&lt;dwr&gt;<br />
&lt;allow&gt;<br />
&lt;create creator="new" javascript="testClass" &gt;<br />
&lt;param name="class" value="com.dwr.TestClass" /&gt;<br />
&lt;include method="testMethod3"/&gt;<br />
&lt;/create&gt;<br />
&lt;/allow&gt;<br />
&lt;/dwr&gt;<br />
3.2、javascript中调用<br />
首先，引入javascript脚本<br />
其次，编写调用java方法的javascript函数<br />
Function callTestMethod3(){<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;//定义要传到java方法中的参数<br />
&nbsp; &nbsp;&nbsp; &nbsp;var data;<br />
&nbsp; &nbsp;&nbsp; &nbsp;//构造参数<br />
&nbsp; &nbsp;&nbsp; &nbsp;data = &#8220;test String&#8221;;<br />
&nbsp; &nbsp;&nbsp; &nbsp;testClass.testMethod3(data);<br />
}<br />
4、调用返回JavaBean的java方法<br />
4.1、dwr.xml的配置<br />
&lt;dwr&gt;<br />
&lt;allow&gt;<br />
&lt;create creator="new" javascript="testClass" &gt;<br />
&lt;param name="class" value="com.dwr.TestClass" /&gt;<br />
&lt;include method="testMethod4"/&gt;<br />
&lt;/create&gt;<br />
&lt;convert converter="bean" match=""com.dwr.TestBean"&gt;<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&lt;param name="include" value="username,password" /&gt;<br />
&lt;/convert&gt;<br />
&lt;/allow&gt;<br />
&lt;/dwr&gt;<br />
&lt;creator&gt;标签负责公开用于Web远程的类和类的方法，&lt;convertor&gt;标签则负责这些方法的参数和返回类型。convert元素的作用是告诉DWR在服务器端Java 对象表示和序列化的JavaScript之间如何转换数据类型。DWR自动地在Java和JavaScript表示之间调整简单数据类型。这些类型包括Java原生类型和它们各自的封装类表示，还有String、Date、数组和集合类型。DWR也能把JavaBean转换成JavaScript 表示，但是出于安全性的原因，要求显式的配置，&lt;convertor&gt;标签就是完成此功能的。converter="bean"属性指定转换的方式采用JavaBean命名规范，match=""com.dwr.TestBean"属性指定要转换的javabean名称，&lt;param&gt;标签指定要转换的JavaBean属性。<br />
4.2、javascript中调用<br />
首先，引入javascript脚本<br />
其次，编写调用java方法的javascript函数和接收返回值的回调函数<br />
Function callTestMethod4(){<br />
&nbsp; &nbsp;&nbsp; &nbsp;testClass.testMethod4(callBackFortestMethod4);<br />
}<br />
Function callBackFortestMethod4(data){<br />
&nbsp; &nbsp;&nbsp;&nbsp;//其中date接收方法的返回值<br />
//对于JavaBean返回值，有两种方式处理<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; //不知道属性名称时，使用如下方法<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;for(var property in data){ <br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;alert("property:"+property);<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;alert(property+":"+data[property]);<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}<br />
//知道属性名称时，使用如下方法<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;alert(data.username);<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;alert(data.password);<br />
}<br />
其中callBackFortestMethod4是接收返回值的回调函数<br />
5、调用有JavaBean参数的java方法<br />
5.1、dwr.xml的配置<br />
配置同4.1<br />
&lt;dwr&gt;<br />
&lt;allow&gt;<br />
&lt;create creator="new" javascript="testClass" &gt;<br />
&lt;param name="class" value="com.dwr.TestClass" /&gt;<br />
&lt;include method="testMethod5"/&gt;<br />
&lt;/create&gt;<br />
&lt;convert converter="bean" match="com.dwr.TestBean"&gt;<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&lt;param name="include" value="username,password" /&gt;<br />
&lt;/convert&gt;<br />
&lt;/allow&gt;<br />
&lt;/dwr&gt;<br />
5.2、javascript中调用<br />
首先，引入javascript脚本<br />
其次，编写调用java方法的javascript函数<br />
Function callTestMethod5(){<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;//定义要传到java方法中的参数<br />
&nbsp; &nbsp;&nbsp; &nbsp;var data;<br />
&nbsp; &nbsp;&nbsp; &nbsp;//构造参数，date实际上是一个object<br />
&nbsp; &nbsp;&nbsp; &nbsp;data = { username:"user", password:"password" }<br />
&nbsp; &nbsp;&nbsp; &nbsp;testClass.testMethod5(data);<br />
}<br />
6、调用返回List、Set或者Map的java方法<br />
6.1、dwr.xml的配置<br />
配置同4.1<br />
&lt;dwr&gt;<br />
&lt;allow&gt;<br />
&lt;create creator="new" javascript="testClass" &gt;<br />
&lt;param name="class" value="com.dwr.TestClass" /&gt;<br />
&lt;include method="testMethod6"/&gt;<br />
&lt;/create&gt;<br />
&lt;convert converter="bean" match="com.dwr.TestBean"&gt;<br />
&lt;param name="include" value="username,password" /&gt;<br />
&lt;/convert&gt;<br />
&lt;/allow&gt;<br />
&lt;/dwr&gt;<br />
注意：如果List、Set或者Map中的元素均为简单类型（包括其封装类）或String、Date、数组和集合类型，则不需要&lt;convert&gt;标签。<br />
6.2、javascript中调用(以返回List为例，List的元素为TestBean)<br />
首先，引入javascript脚本<br />
其次，编写调用java方法的javascript函数和接收返回值的回调函数<br />
Function callTestMethod6(){<br />
&nbsp; &nbsp;&nbsp; &nbsp;testClass.testMethod6(callBackFortestMethod6);<br />
}<br />
Function callBackFortestMethod6(data){<br />
&nbsp; &nbsp;&nbsp;&nbsp;//其中date接收方法的返回值<br />
//对于JavaBean返回值，有两种方式处理<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; //不知道属性名称时，使用如下方法<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;for(var i=0;i&lt;data.length;i++){<br />
for(var property in data){ <br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;alert("property:"+property);<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;alert(property+":"+data[property]);<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;}<br />
}<br />
//知道属性名称时，使用如下方法<br />
for(var i=0;i&lt;data.length;i++){<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;alert(data.username);<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;alert(data.password);<br />
}<br />
}<br />
7、调用有List、Set或者Map参数的java方法<br />
7.1、dwr.xml的配置<br />
&lt;dwr&gt;<br />
&lt;allow&gt;<br />
&lt;create creator="new" javascript="testClass" &gt;<br />
&lt;param name="class" value="com.dwr.TestClass" /&gt;<br />
&lt;include method="testMethod7"/&gt;<br />
&lt;/create&gt;<br />
&lt;convert converter="bean" match="com.dwr.TestBean"&gt;<br />
&lt;param name="include" value="username,password" /&gt;<br />
&lt;/convert&gt;<br />
&lt;/allow&gt;<br />
&lt;signatures&gt;<br />
&lt;![CDATA[ <br />
import java.util.List; <br />
import com.dwr.TestClass; <br />
import com.dwr.TestBean; <br />
TestClass.testMethod7(List&lt;TestBean&gt;); <br />
]]&gt;<br />
&lt;/signatures&gt;<br />
&lt;/dwr&gt;<br />
&lt;signatures&gt;标签是用来声明java方法中List、Set或者Map参数所包含的确切类，以便java代码作出判断。<br />
7.2、javascript中调用(以返回List为例，List的元素为TestBean)<br />
首先，引入javascript脚本<br />
其次，编写调用java方法的javascript函数<br />
Function callTestMethod7(){<br />
//定义要传到java方法中的参数<br />
&nbsp; &nbsp;&nbsp; &nbsp;var data;<br />
&nbsp; &nbsp;&nbsp; &nbsp;//构造参数，date实际上是一个object数组，即数组的每个元素均为object<br />
data = [<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; {<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; username:"user1", <br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; password:"password2"<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; },<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; {<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; username:"user2",<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; password:" password2"<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; }<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;];<br />
&nbsp; &nbsp;&nbsp; &nbsp;testClass.testMethod7(data);<br />
}<br />
注意：<br />
1、对于第6种情况，如果java方法的返回值为Map，则在接收该返回值的javascript回调函数中如下处理：<br />
function callBackFortestMethod(data){<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;//其中date接收方法的返回值<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;for(var property in data){ <br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;var bean = data[property];<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;alert(bean.username);<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;alert(bean.password);<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}<br />
}<br />
2、对于第7种情况，如果java的方法的参数为Map（假设其key为String，value为TestBean），则在调用该方法的javascript函数中用如下方法构造要传递的参数：<br />
function callTestMethod (){<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;//定义要传到java方法中的参数<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;var data;<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;//构造参数，date实际上是一个object，其属性名为Map的key，属性值为Map的value<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;data = {<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; "key1":{<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;username:"user1", <br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; password:"password2"<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; },<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; "key2":{<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; username:"user2",<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; password:" password2"<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; }<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;};<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;testClass.testMethod(data);<br />
}<br />
并且在dwr.xml中增加如下的配置段<br />
&lt;signatures&gt;<br />
&lt;![CDATA[ <br />
import java.util.List; <br />
import com.dwr.TestClass; <br />
import com.dwr.TestBean; <br />
TestClass.testMethod7(Map&lt;String,TestBean&gt;); <br />
]]&gt;<br />
&lt;/signatures&gt;<br />
3、由以上可以发现，对于java方法的返回值为List(Set)的情况，DWR将其转化为Object数组，传递个javascript；对于java方法的返回值为Map的情况，DWR将其转化为一个Object，其中Object的属性为原Map的key值，属性值为原Map相应的value值。<br />
4、如果java方法的参数为List(Set)和Map的情况，javascript中也要根据3种所说，构造相应的javascript数据来传递到java中。</div>
</span></p>
<img src ="http://www.blogjava.net/lonleung/aggbug/331941.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lonleung/" target="_blank">梁良</a> 2010-09-14 01:13 <a href="http://www.blogjava.net/lonleung/archive/2010/09/14/331941.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ubuntu操作系统下手动安装JDK</title><link>http://www.blogjava.net/lonleung/archive/2010/04/14/318367.html</link><dc:creator>梁良</dc:creator><author>梁良</author><pubDate>Wed, 14 Apr 2010 13:52:00 GMT</pubDate><guid>http://www.blogjava.net/lonleung/archive/2010/04/14/318367.html</guid><wfw:comment>http://www.blogjava.net/lonleung/comments/318367.html</wfw:comment><comments>http://www.blogjava.net/lonleung/archive/2010/04/14/318367.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lonleung/comments/commentRss/318367.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lonleung/services/trackbacks/318367.html</trackback:ping><description><![CDATA[<p>1. 手动安装jdk6</p>
<p>&nbsp;</p>
<p>首先，在http://java.sun.com下载jdk-6u12-linux-i586.bin,据说这个操作起来比较简单，不需要转换。</p>
<p>&nbsp;</p>
<p>然后，可以把它放置在任何你喜欢的文件夹，如果是像我样的菜鸟，建议把它放置到主文件夹（/home/*）下。</p>
<p>&nbsp;</p>
<p>下面开始安装jdk：</p>
<p>&nbsp;</p>
<p>终端下进入你存放jdk-6u12-linux-i586.bin，例如我的位置是:/home/lonleung&nbsp;</p>
<p>lonleung$ sudo -s ./jdk-6u12-linux-i586.bin</p>
<p>&nbsp;</p>
<p>一路回车，直到询问是否安装，输入yes回车</p>
<p>&nbsp;</p>
<p>ok，安装完毕，下面配置环境变量</p>
<p>&nbsp;</p>
<p>配置classpath，修改所有用户的环境变量</p>
<p>&nbsp;</p>
<p>lonleung$ sudo gedit /etc/profile</p>
<p>&nbsp;</p>
<p>在文件最后添加</p>
<p>&nbsp;</p>
<p>#set java environment</p>
<p>&nbsp;</p>
<p>JAVA_HOME=/home/lonleung/jdk1.6.0_12</p>
<p>&nbsp;</p>
<p>export JRE_HOME=/home/lonleung/jdk1.6.0_12/jre</p>
<p>&nbsp;</p>
<p>export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH</p>
<p>&nbsp;</p>
<p>export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH</p>
<p><br />
重新启动计算机<br />
<br />
lonleung$: reboot</p>
<p><br />
在来查看一下jdk版本，进入Ubuntu终端 lonleung$java -version 回车，可以看到jdk版本是1.&nbsp;6 .0的。</p>
<p><br />
java -version</p>
<p>&nbsp;</p>
<p>显示如下信息表示已经成功安装</p>
<p>&nbsp;</p>
<p>java version "1.6.0_12"</p>
<p>&nbsp;</p>
<p>Java(TM) SE Runtime Environment (build 1.6.0_12-b04)</p>
<p>&nbsp;</p>
<p>Java HotSpot(TM) Server VM (build 11.2-b01, mixed mode)</p>
<p>&nbsp;</p>
<img src ="http://www.blogjava.net/lonleung/aggbug/318367.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lonleung/" target="_blank">梁良</a> 2010-04-14 21:52 <a href="http://www.blogjava.net/lonleung/archive/2010/04/14/318367.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>