![](/img/trans.png)
[英]Is it possible to validate @RequestParam in Spring MVC REST endpoint?
[英]Spring MVC - REST endpoint for inheritance hierarchy
我正在为类层次结构使用JOINED
继承策略,如下所示:
abstract super class Product
concrete sub class Type1Product extends Product
concrete sub class Type2Product extends Product
现在,我想创建一个REST端点,该端点允许用户发布数据,并将其解析为产品的特定子类,并确保它对于任何类型的产品都具有相同的端点。 因此,如下所示:
@RequestMapping(method = POST, consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
public Product save(@Valid Product product) {
// ...
return product;
}
当前,当我尝试发布时,我收到一条错误消息,提示我无法初始化抽象类,因为Spring试图创建一个Product实例,而不是正确的子类型的实例。
我想做的事可能吗? 如果不是,那么在为继承层次结构创建这样的端点时,最佳实践或惯例是什么?
让我们看看您要做什么,正在尝试反序列化一个对象,并告诉jackson它的Product是您的抽象类,并且您希望jackson自己找到具体的类。
这是无法实现的,并且说得通,可以说杰克逊可以根据附加属性来找出哪个具体类,好吧,所以假设我们有两个没有附加属性的具体类,杰克逊将如何找出这是什么具体的课程?
当指定反序列化的类时,将调用默认构造函数,因此,如果您的类是抽象类,将不起作用,则需要每个具体类的终结点,或者需要DTO和模型映射器,DTO可以包含具体类和所有可能的属性并且您的模型映射器应该依赖于DTO中指示的具体类,使用这种方法,您可以在一个端点中完成此操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.