Spring MVC:在Controller中使用model.addAttribute()将各种Lists发送到Ajax方法

时间:2015-04-21 15:32:10

标签: java ajax spring spring-mvc

我正在开发一个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方法中访问它。我希望我的问题很清楚,如果没有,请告诉我,我会即兴发挥。谢谢。 : - )

2 个答案:

答案 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