Сохранение базовой модели с контроллером Spring на задней панели не работает

Я использовал модель Backbone на переднем конце с URL-адресом модели как «Студент» и 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;
    }
}

person dracodormiens    schedule 14.10.2015    source источник
comment
добавьте код магистрали для сохранения...   -  person Nikolay Rusev    schedule 14.10.2015
comment
@NikolayRusev добавил магистральную модель   -  person dracodormiens    schedule 15.10.2015
comment
также добавьте свой класс Student и каков ответ сервера, когда вы получаете код ошибки 400?   -  person Nikolay Rusev    schedule 15.10.2015
comment
пожалуйста, проверьте текст запроса, отправленный клиентом, и вставьте его сюда.   -  person Nikolay Rusev    schedule 15.10.2015
comment
Текст запроса {имя:Abc,адрес:Def}   -  person dracodormiens    schedule 16.10.2015
comment
Удаленный адрес:[::1]:8080 URL-адрес запроса:localhost:8080/StudentDemo/Student Метод запроса : Код состояния POST: 400 Неверный запрос   -  person dracodormiens    schedule 16.10.2015
comment
Accept:application/json, text/javascript, /; q=0.01 Accept-Encoding:gzip, deflate Accept-Language:en-US,en;q=0.8 Connection:keep-alive Content-Length:598 Content-Type:application/json Host:localhost:8080 Origin:localhost:8080 Реферер:localhost:8080/StudentDemo/index.html User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, например Gecko) Chrome/45.0.2454.101 Safari/537.36 X-Requested- С помощью: XMLHttpRequest   -  person dracodormiens    schedule 16.10.2015


Ответы (1)


Обновление: проблема заключалась в неправильном преобразовании JSON в объект Student в методе saveStudent() контроллера Spring при принятии параметра @RequestBody, который выдавал ошибку 400. Я решил свою проблему, добавив пустой конструктор по умолчанию Student() в класс Student и добавив null в метод сохранения Backbone.

В студенческом классе

public Student(){
}

Магистраль сохранить

student.save(null,{
    success:function()
    {
        ...
    }
);
person dracodormiens    schedule 19.10.2015