我想编写一个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回调函数。
有人能为这个问题提出解决方案吗?
答案 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"/>
现在工作正常。
感谢名单