Я строй службы JSON REST с Spring 3.0.5 и мой ответа содержит объект из моего запроса хотя я не добавлял его. Я использую MappingJacksonJsonView и Jackson 1.6.4 для рендеринга объекта ModelAndView для JSON.Spring MVC контроллер добавляет объект запроса ответ
Объект Пользователь просто
public class SimpleUser {
private String username;
private String password;
public String getUsername() { return username; }
public void setUsername(String username) { this.username = username; }
public String getPassword() { return password; }
public void setPassword(String password) { this.password = password;
}
}
Один из запросов выглядит следующим образом
@RequestMapping(value = "/register", method = RequestMethod.GET)
public ModelAndView register(SimpleUser user) {
ModelAndView mav = new ModelAndView();
mav.addObject("ok", "success");
return mav;
}
Тогда я вызываю службу с
curl 'http://localhost:8080/register?username=mike&password=mike'
Ответ я ожидаю
{"ok": "success"}
Ответ Я получаю
{"ok":"success","simpleUser":{"username":"mike","password":"mike"}}
Где и почему добавляется объект пользователя к ModelAndView и как я могу предотвратить это?
Возможное решение
Один из способов обойти это использовать модель вместо того, чтобы SimpleUser. Это, похоже, работает, но должно быть возможно использовать бизнес-объект.
Это работает:
@RequestMapping(value = "/register", method = RequestMethod.GET)
public ModelAndView register(Model model) {
log.debug("register(%s,%s)", model.asMap().get("usernmae"), model.asMap().get("password"));
ModelAndView mav = new ModelAndView();
mav.addObject("ok", "success");
return mav;
}
Здравствуйте, @EndlessLoop, я также сталкиваюсь с той же проблемой, но я использую 'ContentNegotiationViewResolver' с' XStreamMarshller'.Нажмите на следующую ссылку, чтобы увидеть мою проблему: http://stackoverflow.com/questions/25037473/spring-mvc-modelandviewcontainer-view-is-null-default-modelsome-object –