【问题标题】:Passing json object to spring mvc controller using Ajax使用 Ajax 将 json 对象传递给 spring mvc 控制器
【发布时间】:2013-05-14 08:57:10
【问题描述】:

我试图通过 Ajax 请求将 json 发送到 Spring mvc 控制器但没有成功。 json字符串的格式如下:

{"Books": 
   [{'author':'Murakami','title':'Kafka on the shore'},{'author':'Murakami','title':'Norwegian Wood'}]}

解析json的控制器通过这个java bean包装它:

class Books{
   List <Map<String, String>> books;
   //...get & set method of the bean
}

控制器方法有如下形式:

    @RequestMapping(method = { RequestMethod.GET, RequestMethod.POST }, value = "/checkBook.do")
public ModelAndView callCheckBook(
        @RequestBody Books books){....}

不幸的是,这不起作用,调用该方法时出现以下错误: “Null ModelAndView 返回到 DispatcherServlet,名称为...”

我哪里错了? 先感谢您! 问候

【问题讨论】:

  • 你用的是什么版本的spring?还要提供创建 ajax 请求的脚本。
  • spring 3.0.4版本,js代码如下:$.post('checkBook.do', $.parseJSON(jsonString), function(data) {..}
  • 发布更多callCheckBook方法的代码。
  • callCheckBookMethod body 没有到达,我认为问题出在 Books 对象的反序列化之前...

标签: spring spring-mvc


【解决方案1】:

创建一个模型类

class Books
{
private string author;
private string title;
// gets and sets
}

并且还像这样创建 Wrapper 类

class BookWrapper{
private List<Books> Books; // this name should matches the json header
}

现在在控制器中

@RequestMapping(method = { RequestMethod.GET, RequestMethod.POST }, value = "/checkBook.do")
public ModelAndView callCheckBook(
        @RequestBody BookWrapper Books){....}

在 Ajax 调用中为您的论坛创建一个 seralizeArray,这将为您提供 json 对象,然后它将绑定到包装类

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-02
    • 2013-08-17
    • 1970-01-01
    • 1970-01-01
    • 2013-12-13
    • 2020-08-23
    • 2017-03-17
    • 2013-01-29
    相关资源
    最近更新 更多