[英]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.