Я создаю службу JSON REST с Spring 3.0.5, и мой ответ содержит объект из моего запроса , хотя я его не добавил. Я использую MappingJacksonJsonView и Jackson 1.6.4 для рендеринга объекта ModelAndView в JSON.
Объект User прост
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;
}