【问题标题】:Backbone Model save with Spring Controller at the back end not working后端使用 Spring 控制器保存的主干模型不起作用
【发布时间】:2015-10-14 05:33:48
【问题描述】:

我在前端使用了 Backbone 模型,模型 url 为“Student”,后端为 Spring Controller。

我可以使用以下代码进行获取

@RequestMapping(value = "/Student", produces = "application/json", method = RequestMethod.GET)
public @ResponseBody Student createStudent() {
    Student student = new Student("Abc","Def");
    return student;
}

但是下面的保存代码不起作用

@RequestMapping(value = "/Student", consumes = "application/json", produces =  "application/json",method = RequestMethod.POST)
public @ResponseBody Student saveStudent(@RequestBody Student student) {
    System.out.println(student.getName());
    return student;
}

我在客户端更改了 Student 的一些属性并保存了,但它给了我 HTTP 400 错误,描述为“客户端发送的请求在语法上不正确。”

主干模型

var Student = Backbone.Model.extend({
    url : 'Student',
    defaults : {
        name : '',
        address : '',
    }
});

var student = new Student();
student.fetch();
alert(JSON.stringify(student,null,4));
student.set({name:'john'});
student.save();

学生班

public class Student{
    private String name;
    private String address;

    public void Student(String name,String address){
       this.name=name;
       this.address=address;
    }

    public String getName(){
       return name;
    }

    public void setName(String name){
        this.name=name;
    }

    public String getAddress(){
       return address;
    }

    public void setAddress(String address){
        this.address=address;
    }
}

【问题讨论】:

  • 添加您的主干代码以保存...
  • @NikolayRusev 添加了主干模型
  • 还添加您的Student 类,当您收到错误代码 400 时服务器的响应是什么?
  • 请检查客户端发送的请求正文,粘贴到这里。
  • 请求正文 {"name":"Abc","address":"Def"}

标签: javascript spring-mvc backbone.js controller backbone-model


【解决方案1】:

更新:问题是在 spring 控制器的 saveStudent() 方法中 JSON 到 Student 对象的转换不正确,同时接受了导致 400 错误的 @RequestBody 参数。我通过在 Student 类中添加一个空的默认构造函数 Student() 并将 null 添加到 Backbone 保存方法来解决我的问题。

在学生课上

public Student(){
}

主干保存

student.save(null,{
    success:function()
    {
        ...
    }
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多