2015-11-10 2 views
1

У меня есть CRUD-контроллер в Spring MVC API.Spring MVC CRUD-контроллер с данными Ember

Это мой метод создания:

@Override 
    @JsonView(ApiView.FormView.class) 
    @RequestMapping(method = RequestMethod.POST, consumes = ApiMediaType.jsonContentType, produces = ApiMediaType.jsonContentType) 
    public ApiResponse create(@RequestBody @Valid Entity entity, BindingResult result) { 
     if (result.hasErrors()) return new ApiResponse(result.getAllErrors()); 
     service.add(entity); 
     return new ApiResponse(entity); 
    } 

Это работает хорошо.

Если я посылаю такие данные API, он работает

{ 
     "email":"[email protected]", 
     "password":"secret!", 
     "firstName":"John", 
     "lastName":"Doe", 
     "title":"Mr." 
    } 

Проблема заключается в том, что я использую Ember JS с Ember данных. Мой адаптер посылает эти данные:

{ 
    "data":{ 
     "attributes":{ 
     "email":"[email protected]", 
     "firstName":"John", 
     "lastName":"Doe", 
     "title":"Mr.", 
     }, 
     "type":"users" 
    } 
} 

Это не @Valid User form, что мой UserController ожидает в методе объявляемых ниже:

public ApiResponse create(@RequestBody @Valid User form, BindingResult result) {}

Как я могу преобразовать данные, которые Ember является отправка объекту пользователя в мое приложение Spring?

Спасибо и извините за мой английский.

ответ

0

Вы забыли @ResponseBody аннотацию.

Попробуйте это:

@Override 
@JsonView(ApiView.FormView.class) 
@RequestMapping(method = RequestMethod.POST, consumes = ApiMediaType.jsonContentType, produces = ApiMediaType.jsonContentType) 
@ResponseBody  
public ApiResponse create(@RequestBody @Valid Entity entity, BindingResult result) { 
    if (result.hasErrors()) return new ApiResponse(result.getAllErrors()); 
    service.add(entity); 
    return new ApiResponse(entity); 
} 
Смежные вопросы