Je suis familier avec la façon de retour json à partir de mon @Controller
méthodes à l'aide de l' @ResponseBody
d'annotation.
Maintenant, je vais essayer de lire quelques arguments json dans mon contrôleur, mais je n'ai pas eu de chance jusqu'à présent. Voici mon contrôleur de la signature:
@RequestMapping(value = "/ajax/search/sync")
public ModelAndView sync(@RequestParam("json") @RequestBody SearchRequest json) {
Mais quand j'essaie d'appeler cette méthode, le printemps se plaint que:
Failed to convert value of type 'java.lang.String' to required type 'com.foo.SearchRequest'
Retrait de l' @RequestBody
d'annotation ne semble pas faire une différence.
Manuellement de parser le json œuvres, afin Jackson doit être dans le classpath:
// This works
@RequestMapping(value = "/ajax/search/sync")
public ModelAndView sync(@RequestParam("json") String json) {
SearchRequest request;
try {
request = objectMapper.readValue(json, SearchRequest.class);
} catch (IOException e) {
throw new IllegalArgumentException("Couldn't parse json into a search request", e);
}
Des idées? Suis-je en train d'essayer de faire quelque chose qui n'est pas pris en charge?