【发布时间】:2011-04-24 17:14:21
【问题描述】:
我熟悉如何使用 @ResponseBody 注释从我的 @Controller 方法返回 json。
现在我正在尝试将一些 json 参数读入我的控制器,但到目前为止还没有运气。 这是我的控制器的签名:
@RequestMapping(value = "/ajax/search/sync")
public ModelAndView sync(@RequestParam("json") @RequestBody SearchRequest json) {
但是当我尝试调用此方法时,spring 抱怨说:
Failed to convert value of type 'java.lang.String' to required type 'com.foo.SearchRequest'
删除@RequestBody 注释似乎没有什么区别。
手动解析 json 有效,所以 Jackson 必须在类路径中:
// 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);
}
有什么想法吗?我是否正在尝试做一些不受支持的事情?
【问题讨论】:
标签: java json spring-mvc jackson