接口和@RequestBody
我目前正在研究一个项目,该项目允许用户在一定时间段内(通过网络)预订所选资源的使用。在这个程序中,我试图保持对接口编程的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的特定实现,这意味着我很可能需要从接口中排除这些方法,即使用于此目的的任何控制器都需要这些方法。
我要问的是,是否有人知道一种将接口定义为@RequestBody
使用JSON
进行映射所期望的对象的方法,或者有人对如何构造我的contoller接口以包括这些方法有任何建议吗?
干杯
回答:
我不确定它是否会起作用,但是您可以尝试使其通用:
public interface BookableResourceController<R extends BookableResource> { @RequestMapping(value="/delete.html", method = RequestMethod.POST)
public ModelAndView processDeleteResource(@RequestBody R resource);
}
以上是 接口和@RequestBody 的全部内容, 来源链接: utcz.com/qa/406955.html