我正在开发一个Spring-MVC应用程序,我想在其中向AJAX方法发送不同类型的java.util.List
。我不知道在向AJAX方法提供数据时是否可以在控制器中使用model.addAttribute
。
情况是:
@RequestMapping(value=/mappingurl)
public @ResponseBody void sendDataToAjax(){
List<Item1> item1;
List<Item2> item2;
List<Item3> item3;
model.addAttribute("item1collection",item1);
model.addAttribute("item2collection",item2);
model.addAttribute("item3collection",item3);
}
当它是一个AJAX方法时,它会工作吗,如果没有,我能做什么,所以我可以发送List
个对象并在AJAX方法中访问它。我希望我的问题很清楚,如果没有,请告诉我,我会即兴发挥。谢谢。 : - )
答案 0 :(得分:3)
向模型添加多个属性不会有任何问题。当您返回到客户端时,您将能够在AJAX请求中获取它们。
此处的问题您无法通过java.util.List
的javascript使用client-side
个对象,因此您必须创建Json
个对象或转换为{{1} array
。
我在代码中唯一要改变的是添加一个响应来捕获方法的成功或失败:
java.util.List
这可以做得更好by implementing an enum class ...但这是一种更快的方法
在此之后,你可以在ajax请求中抓住public @ResponseBody String sendDataToAjax(){
// do your stuff and return "KO" if something goes wrong
return "OK"; // if success
}
操作的结果并继续根据它。
答案 1 :(得分:1)
恕我直言答案是否定的,您无法在AJAX响应中迭代或打印Arraylist
。
您可以将其转换为JSON-array
并在ajax响应中迭代它。一个很好的启动示例,
Converting a Java ArrayList of strings to a JavaScript array