简体   繁体   English

如何将json数据发送到Spring Controller?

[英]How to send json data to a Spring Controller?

I am working with Spring MVC 3.0.7. 我正在使用Spring MVC 3.0.7。 I send data using AJAX to my Spring controller but the spring controller is not called. 我使用AJAX将数据发送到我的Spring控制器,但未调用spring控制器。 Here is my Ajax call: 这是我的Ajax电话:

var mysaverowurl = '/app/user/save';
$.ajax({
  url: mysaverowurl,
  type: "POST",
  data: postData,
  contentType: 'application/json',
  success: function () {
    alert("success ");
  }
}); 

postData contains {"name":"Franck","age":"94"} postData包含{"name":"Franck","age":"94"}

Here is my Spring controller: 这是我的Spring控制器:

@Controller
@RequestMapping("/app/user")
public class myController {
    @RequestMapping(value = "/save", method = RequestMethod.POST, headers = { "Content-type=application/json" })
    @ResponseBody
    public List<String> saveUser(HttpServletRequest request, Model model, @RequestBody User user) {
        List<String> reponse = null;
        // ...........
        return reponse;
    }
}

The controller is not called. 不调用控制器。 But if remove @RequestBody from the saveUser signature: 但是,如果从saveUser签名中删除@RequestBody

public List<String> saveUser(HttpServletRequest request, Model model)

it gets called. 它被调用。 Why @RequestBody doesn't seem to work? 为什么@RequestBody似乎不起作用?

User class : 用户类别:

    public class User{

    private String name;

    private String age;

    public String getAge(){
      return age;
     }
    public void setAge(String age){
    this.age=age;
}
    public String getName(){
      return name;
     }
    public void setAge(String name){
    this.name=name;
}

    }

Here is a part of my pom file. 这是我的pom文件的一部分。

        <dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-core-lgpl</artifactId>
                 <version>1.8.1&</version>
</dependency>
<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.9.13</version>
</dependency>

Change your var mysaverowurl = '<c:url value="/app/user/save" />'; 更改您的var mysaverowurl = '<c:url value="/app/user/save" />'; to

var mysaverowurl = '/app/user/save';

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM