DWR非常直接地处理基元列表。我无法找到DWR方法调用返回的对象数组是否表示JSON对象。有线索吗?或者我是否必须将表示对象数组的JSON字符串返回给浏览器?
答案 0 :(得分:6)
这个答案有点晚了,但这里有:)
好消息:DWR还以非常直接的方式处理Java数组和集合。只需返回它们,在客户端,您将获得JavaScript Array对象。 (在典型情况下,比如数组或集合中的基元或字符串,即。如果内容更具异国情调,则可能需要定义转换器;更多信息如下。)
以下是DWR documentation(强调我的)的引用:
默认情况下,以下所有内容均为 没有进一步的转换 声明:
- 所有基本类型,boolean,int,double等
- 这些布尔,整数等的基于类的版本
- java.lang.String中
- java.util.Date和3个SQL派生词
- 以上
的数组- 上述
的集合(列表,集合,地图,迭代器等)- 来自DOM,XOM,JDOM和DOM4J的DOM对象(如元素和文档)
所以你绝对不需要这些JSON字符串(尽管对于更复杂的数据结构来说这可能是一个很好的选择)。
实际上,您可以在不进行大量手动操作的情况下返回更多种类的对象,因为DWR带有“converters”,可用于许多典型用途。例如,要使您的自定义“bean”样式Java对象在客户端JS中工作,您在dwr.xml
中需要说的就是您要使用bean converter:
<convert converter="bean" match="com.company.YourBean" />
即使你的方法返回那些bean对象的List(或数组)......
public static List<YourBean> getData(){ ... }
......以上配置就足够了,这很不错。