【问题标题】:Spring MVC : Using model.addAttribute() in Controller to send various Lists to Ajax methodSpring MVC:在 Controller 中使用 model.addAttribute() 将各种列表发送到 Ajax 方法
【发布时间】:2015-06-28 21:08:41
【问题描述】:

我正在开发一个 Spring-MVC 应用程序,我想在其中将不同类型的 java.util.List 发送到 AJAX 方法。不知道在给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 方法中访问它。我希望我的问题很清楚,如果没有,请告诉我,我会即兴发挥。谢谢。 :-)

【问题讨论】:

  • 你在客户端使用什么 AJAX 方法?您需要 return(例如 JSON)并且应该能够在 AJAX 调用完成时在客户端解析/使用它

标签: java ajax spring spring-mvc


【解决方案1】:

向模型添加多个属性不会有任何问题。当您返回客户端时,您将能够在 AJAX 请求中获取它们。

这里的问题是你不能在client-side处通过javascript使用java.util.List对象,所以你必须创建Json对象或转换为arrayjava.util.List。 p>

我要在您的代码中更改的唯一一件事是添加响应以捕获方法的成功或失败:

public @ResponseBody String sendDataToAjax(){
    // do your stuff and return "KO" if something goes wrong


    return "OK"; // if success
}

这可以做得更好by implementing an enum class...但这是一种更快的方法

在此之后,您可以在 ajax 请求中捕获server-side 操作的结果并根据它继续。

【讨论】:

  • 所以我可以使用上面的代码将数据发送到 Ajax 方法,对吗? @San Krish 的下一个回答说不。是的,我无法在客户端访问列表,我想唯一的选择是转换为数组或 JsonList。
  • 你可以用来发送各种数据对象,但没有List,正如@San 正确所说...
  • 酷。谢谢。然后我将使用 Array 或 JsonList。只是一件事,我知道如何遍历数组或将列表转换为数组,但是如果您可以为将来的用户编写一些伪代码,那么将来的其他用户现在可能会这样做。
【解决方案2】:

恕我直言,答案是否定的,您不能在 AJAX 响应中迭代或打印 Arraylist

您可以改为将其转换为 JSON-array 并在 ajax 响应中对其进行迭代。一个不错的启动示例,

Converting a Java ArrayList of strings to a JavaScript array

【讨论】:

    猜你喜欢
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-03
    • 1970-01-01
    • 2015-02-28
    相关资源
    最近更新 更多