今晚,夏雨天问了我一个关于dwr的问题,问题是这样的:“怎么把一个js中的list传到后台做为Java方法的参数”
其实Js中是没有list的,只有数组,于是你可以
var
list
=
[
"
aaa
"
,
"
bbb
"
,
"
ccc
"
,
"
ddd
"
];
public
void
processMap(List data)
{
System.out.println(data.size());
}
<
signatures
>
<![CDATA[
import java.util.List;
import com.livahu.TestDwr;
TestDwr.processMap(List<String>);
]]>
</
signatures
>
其实Js中是没有list的,只有数组,于是你可以
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
但关键是怎么用它做参数类?很多人会认为直接在后台
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0196c3df5ea9e936f21e9932cca91014.gif)
但这是行不同的。不信,你试试就知道了。
我看了一下dwr的dtd,突然发现这样一个东西
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
(把上面这个加入到dwr.xml中的</allow>后面)
其实,对于js中的数组,dwr是不会自动封装好成java的List的,它要你指明是什么类型。
你甚至可以指名List<SomeJavaBean>
神奇吧!dwr还是很人性化的,你想想,只要有业务的需要,dwr想做好,它就会有相应的实现。神奇吧!dwr还是很人性化的,你想想,只要有业务的需要,dwr想做好,它就会有相应的实现。
但一个问题来了,夏雨天似乎是想要一个Map,当然Map<string, string>就和他的一些业务逻辑参数一样了,但他现在有一个businessId是String类型的,但还想有一个List类型的在这个Map里,我想了一阵子也没有法子。
突然意识到自己有多么的错误,我想James Gosling该骂骂我了。我曾对泛型还是做过一些研究(在JDK5.0)的规范刚出来的时候。在一个Map或List里放多种类型的数据这本身就与泛型的引入是格格不入的,是不正确的做事方式。所以我觉得这个问题就不是问题了,我想dwr这个小技巧还是有必要和大家共享,只是不要象我一样糊涂的想把几个不同类型的数据放在一个Map里面。