我目前正在开发一个项目,该项目允许用户(通过网络)预订在给定时间段内使用所选资源。在这个程序中,我试图遵循 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 进行映射,或者有人对如何构建我的控制器接口以包含这些方法有任何建议吗?
Cheers
我不确定它是否有效,但你可以尝试使其通用:
public interface BookableResourceController<R extends BookableResource> {
@RequestMapping(value="/delete.html", method = RequestMethod.POST)
public ModelAndView processDeleteResource(@RequestBody R resource);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)