接口和@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

回到顶部