gpt4 book ai didi

java - 接口(interface)和@RequestBody

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:12:43 25 4
gpt4 key购买 nike

我目前正在开展一个项目,该项目允许用户(通过网络)在给定时间段内预订所选资源的使用。在这个程序中,我试图遵循 Spring 的接口(interface)编程理念(以及一般的最佳实践),因此我尝试在具体类之间重复功能的任何地方使用接口(interface)。

我创建的一个接口(interface)称为 BookableResourceController,它指定 Controller 处理要预订的任何类型资源所需的最低功能所需的方法。我还使用了第二个接口(interface) BookableResource,它标识哪些对象为允许通过应用程序预订的资源建模。

我目前遇到的问题是 BookableResourceController 定义的一些方法使用 @RequestBody 映射将 JSON 对象转换为方法参数,并且由于 Jackson 只能将 JSON 转换为“SimpleType”对象,我收到如果我将输入参数指定为 BookableResource,则会出错。

@RequestMapping(value="/delete.html", method = RequestMethod.POST)  
public ModelAndView processDeleteResource(
@RequestBody BookableResource resource);

Can not construct instance of org.codehaus.jackson.map.type.SimpleType, problem: abstract types can only be instantiated with additional type information

据我所知,这个错误意味着我需要定义 BookableResource 的特定实现,这意味着我很可能需要从接口(interface)中排除这些方法,即使用于此目的的任何 Controller 都需要这些方法。

我想问的是,是否有人知道将接口(interface)定义为使用 JSON 的 @RequestBody 映射所期望的对象的方法,或者有人对如何构建我的 Controller 有任何建议接口(interface)以便包含这些方法?

干杯

最佳答案

我不确定它是否可行,但您可以尝试使其通用:

public interface BookableResourceController<R extends BookableResource> {
@RequestMapping(value="/delete.html", method = RequestMethod.POST)
public ModelAndView processDeleteResource(@RequestBody R resource);
}

关于java - 接口(interface)和@RequestBody,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4737579/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com