【发布时间】:2011-06-11 21:01:01
【问题描述】:
我目前正在开展一个项目,该项目允许用户(通过网络)在给定时间段内预订所选资源的使用。在这个程序中,我试图保持 Spring 的接口编程理念(和一般最佳实践),因此我尝试在具体类之间重复功能的任何地方使用接口。
我创建的一个接口称为 BookableResourceController,它指定控制器所需的方法来处理要预订的任何类型的资源所需的最低功能。我还使用了第二个接口 BookableResource,它标识了哪些对象对允许通过应用程序预订的资源进行建模。
我目前遇到的问题是 BookableResourceController 定义的一些方法使用 @RequestBody 映射将 JSON 对象转换为方法参数,并且由于 Jackson 只能将 JSON 转换为“SimpleType”对象,因此我收到如果我将输入参数指定为 BookableResource,则会出错。
@RequestMapping(value="/delete.html", method = RequestMethod.POST)
public ModelAndView processDeleteResource(
@RequestBody BookableResource resource);
无法构造实例 org.codehaus.jackson.map.type.SimpleType, 问题:抽象类型只能是 用附加类型实例化 信息
据我所知,这个错误意味着我需要定义 BookableResource 的特定实现,这意味着我很可能需要从接口中排除这些方法,即使用于此目的的任何控制器都需要那些方法。
我要问的是,是否有人知道如何将接口定义为使用 JSON 的 @RequestBody 映射所期望的对象,或者是否有人对如何构建我的控制器接口以包含这些有任何建议方法?
干杯
【问题讨论】:
-
请不要将
<code>用于代码块。选择代码块并单击带有花括号的图标(或仅缩进四个空格)
标签: java json spring spring-mvc jackson