2014-09-25 3 views
-1

Превращение JSON в объект модели терпит неудачу, когда @JsonProperty аннотации используется следующим образом:Преобразование JSON-объект для моделирования терпит неудачу при использовании @JsonProperty

класс контроллера фрагмент:

@RequestMapping(value = "/show", method = RequestMethod.POST) 
    public String doControl(@ModelAttribute User user, HttpServletRequest request){ 
      return user.getId(); 
    } 

класс Модель фрагмент:

public User{ 
     @JsonProperty("user_id") 
     private id; 

     @JsonProperty("user_name") 
     private name; 

     //getters and setters 
    } 

Когда я передать в JSON {"user_id":1, "user_name":"foo" } с POST запроса User поля null. Будет ли аннотация Jsonproperty работать при использовании аннотации ModelAttribute?

ответ

1

Он будет работать с @RequestBody. С помощью @RequestBody вы указываете Spring MVC, что аннотированный объект находится внутри тела HTTP-запроса. Spring MVC затем попытается декодировать объект с помощью соответствующего HTTPMessageConverter - вы хотите, чтобы он использовал конвертер сообщений для json, поэтому ваш запрос POST должен содержать правильный заголовок Content-Type (например, Content-Type: application/json).

Если вы не указали @RequestBody Spring MVC попытается заполнить объект, используя параметры запроса (например, как если бы вы отправили стандартную HTTP-форму POST).

Следовательно:

public String doControl(@RequestBody User user, HttpServletRequest request){...}

Смежные вопросы