0


我想编写一个 DWR 函数来准备一个 Hashtable 的向量并返回到 javascript,在 javascript 中我需要迭代一个向量并打印 Hashtable 的内容。

我的 DWR 功能是:

public Vector getEmployeeData() {
   Vector employeeData = new Vector();
   // some other content to prepare vector

   return employeeData;
}

我已经在 web.xml 中正确配置了 dwr-servlet,dwr.xml 中的内容是:

<create creator="new" javascript="Employee" scope="script">
  <param name="class" value="com.test.DWREmployeeManager"/>
</create>
<convert match="java.util.Hashtable" converter="bean"/>
<convert match="java.util.Vector" converter="bean"/>  

但我的问题是当我从 javascrit 调用这个 dwr 方法时,我得到空数组作为 dwr 回调函数的结果。

任何人都可以提出这个问题的解决方案..

4

2 回答 2

0

我怀疑你的问题是你告诉 DWR 将 Collection 对象转换为 bean。你不应该这样做,也不想这样做——它们不是豆子,它们是集合。

请参阅: http ://directwebremoting.org/dwr/server/dwrxml/converters/collection.html

此外,正如我上面的评论,您可能想要使用列表(数组或链接)和 HashMap。如果您使用的是 Java 5 或更新版本,您可能应该添加类型声明。

这是我的建议:(你没有专门显示你的哈希表代码,所以我只是假设一个映射键控了一些字符串。)

public List<Map<String,EmployeeData>> getEmployeeData() {
    List<Map<String,EmployeeData>> employeeData = new ArrayList<Map<String,EmployeeData>>();
    // some other content to prepare list

    return employeeData;
}

在 dwr.xml 中,您需要删除两个转换器行,并添加一个:

<convert match="com.test.EmployeeData" converter="bean"/>

(并确保该 bean 有适当的 getter 和 setter 方法)。

于 2010-11-08T03:12:08.270 回答
0

而不是使用这两个标签,

<convert match="java.util.Hashtable" converter="bean"/>
<convert match="java.util.Vector" converter="bean"/>  

我使用了以下转换标签:

<convert converter="collection" match="java.util.Collection"/>

现在它工作正常。

谢谢

于 2010-11-15T09:19:18.823 回答