JSON发布到Spring-MVC,Spring没有看到数据

时间:2012-06-01 18:39:10

标签: ajax json spring spring-mvc

我正在开发一个项目,该项目将使用Ajax将JSON对象发布到Springs-MVC。我做了很多更改,我得到了更多错误,但我没有看到在我需要的对象中发布到Spring的数据。

这是我的Spring Controller。

@RequestMapping(value="/AddUser.htm",method=RequestMethod.POST)
    public @ResponseBody JsonResponse addUser(@ModelAttribute(value="user") User user, BindingResult result ){
        JsonResponse res = new JsonResponse();

        if(!result.hasErrors()){
            res.setStatus("SUCCESS");
            res.setResult(userList);
        }else{
            res.setStatus("FAIL");
            res.setResult(result.getAllErrors());
        }

        return res;
    }

我放了一个断点,我的USER对象永远不会得到数据。 next是我的USER对象的副本:

public class User {

    private String name = null;
    private String education = null;

    private List<String> nameList = null;
    private List<String> educationList = null;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getEducation() {
        return education;
    }
    public void setEducation(String education) {
        this.education = education;
    }
    public List<String> getNameList() {
        return nameList;
    }
    public void setNameList(List<String> nameList) {
        this.nameList = nameList;
    }
    public List<String> getEducationList() {
        return educationList;
    }
    public void setEducationList(List<String> educationList) {
        this.educationList = educationList;
    }

现在对于执行Ajax的javascript代码,JSON帖子:

function doAjaxPost() {  

      var inData = {};

      inData.nameList = ['kurt','johnathan'];
      inData.educationList = ['GSM','HardKnocks'];

      htmlStr = JSON.stringify(inData);
      alert(".ajax:" + htmlStr);


    $.ajax({
         type: "POST",
         contentType: "application/json; charset=utf-8",
         url:  contexPath + "/AddUser.htm",
         data: inData,
         dataType: "json",
         error: function(data){
              alert("fail");
         },
         success: function(data){
              alert("success");
         }
         });

};

如果可以帮忙,请现在就告诉我?我必须尽快开始工作......谢谢

1 个答案:

答案 0 :(得分:3)

您还需要在控制器中找到的RequestMapping注释中指定标题。

@RequestMapping(headers ={"Accept=application/json"}, value="/AddUser.htm", method=RequestMethod.POST)

此外,请删除网址路径中的.htm。 htm是某种请求类型。使用.htm指定要将请求作为经典html请求处理的Web服务器。使用.json将向Web服务器指定请求期望作为json请求处理。