Java 使用向量和哈希表作为dwr的bean

Java 使用向量和哈希表作为dwr的bean,java,javascript,dwr,Java,Javascript,Dwr,我想写一个DWR函数,准备一个哈希表的向量并返回javascript,在javascript中我需要迭代一个向量并打印哈希表的内容 我的DWR功能是: public Vector getEmployeeData() { Vector employeeData = new Vector(); // some other content to prepare vector return employeeData; } 我已经在web.xml中正确配置了dwr servlet,d


我想写一个DWR函数,准备一个哈希表的向量并返回javascript,在javascript中我需要迭代一个向量并打印哈希表的内容

我的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回调函数的结果


有人能提出这个问题的解决方案吗?

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

见:

此外,正如我在上面的评论中所说,您可能希望使用列表(数组或链接)和HashMap。如果您使用的是Java5或更高版本,您可能应该添加类型声明

以下是我的建议: (您没有具体显示哈希表代码,所以我只是假设映射中键入了一些字符串。)

公共列表getEmployeeData(){
List employeeData=new ArrayList();
//准备列表的其他一些内容
返回员工数据;
}
在dwr.xml中,需要删除两条转换器行,然后添加一条:

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


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

而不是使用这两个标记

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

我使用了以下转换标记:

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

现在它可以正常工作了


Thanx

Vector和Hashtable是古老的类,多年前就应该正式弃用。分别使用ArrayList和HashMap。出于某种原因,很多初学者都在使用她的
Vector
。他们一定在用一些过时的书。谢谢你的建议。但是,使用Vector和Hashtable有什么缺点吗?Vector既不是不推荐的,也不是古老的。虽然大多数情况下都应该使用ArrayList,但它们是有用途的。向量是线程安全的,而ArrayList不是。大多数情况下,您不需要列表是线程安全的,因此ArrayList就足够了(而且性能更好)。同样的答案适用于Hashtable和HashMap。哈希表是同步的,哈希映射不是。
<convert converter="collection" match="java.util.Collection"/>