使用Vector和Hashtable作为dwr的bean

时间:2010-11-01 14:01:17

标签: java javascript dwr


我想编写一个DWR函数,准备一个Hashtable的Vector并返回到javascript,在javascript中我需要迭代一个Vector并打印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回调函数。

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

2 个答案:

答案 0 :(得分:0)

我怀疑你的问题是你告诉DWR将Collection对象转换为bean。你不应该这样做,你也不想 - 他们不是豆子,他们是收藏品。

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

此外,正如我在上面的评论中所说,您可能想要使用List(数组或链接)和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方法)。

答案 1 :(得分:0)

而不是使用这两个标签,

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

我使用了以下转换标记:

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

现在工作正常。

感谢名单