Spring 3 MVC - использование доменных объектов как @RequestBody - PullRequest
1 голос
/ 12 октября 2011

Я думаю об использовании объекта предметной области как @RequestBody.Мои доменные объекты являются неизменяемыми объектами и поэтому не имеют методов установки.Это запрос приложения / JSON, и я использую конвертер сообщений Джексона.

@RequestMapping(value="/user", method=RequestMethod.POST)
@ResponseStatus(HttpStatus.NO_CONTENT)
public @ResponseBody void createUser(@RequestBody User user) {
    .......... 
}

Поскольку у меня нет методов установки внутри моего пользовательского объекта, когда я делаю POST-запрос к "/ user", я получаю UnrecognizedPropertyException от MappingJacksonHttpMessageConverter.Есть ли способ весной, когда я мог бы назначить данные, используя статический фабричный метод (или конструктор) пользовательского объекта вместо сеттеров.

Ответы [ 2 ]

2 голосов
/ 13 октября 2011

Я нашел ответ сам.Используйте @JsonCreator.Вот пример.Вы можете использовать его и в статических фабричных методах.

@JsonCreator
public NonDefaultBean(@JsonProperty("name") String name, @JsonProperty("age") int age)
{
  this.name = name;
  this.age = age;
}
0 голосов
/ 12 октября 2011

Я думаю, это зависит от вашего парсера JSON.Я знаю, что GSON [1] работает с полями (в отличие от геттеров / сеттеров), поэтому вам может повезти с этим.Я полагаю, вам придется написать свой собственный конвертер сообщений.

[1] http://code.google.com/p/google-gson/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...