@PostMapping("")
<T extends FormEntity> ServiceResponse newService(@RequestHeader("form-class")Class<T> clazz, @RequestBody @NotNull T genericFormEntity) {
Service service = genericFormEntity.instantiateService();
serviceHashMap.put(service.getId(), service);
UUID id = service.getId();
return getServiceResponse(id);
}
你好,
Java/Spring Boot 將 genericFormEntity 讀取為 FormEntity(一個抽象類),此時我的代碼錯誤(因為無法構造抽象類)。如何使 Java/Spring Boot 將 genericFormEntity 構造為 JVMFormEntity(擴展 FormEntity 并且應該由 Class clazz 提供的類)?
在我最近的嘗試之上:)
uj5u.com熱心網友回復:
如果請求體的內容型別是application/json,以下可以是一個簡單的解決方案。
@Autowired
private ObjectMapper objectMapper;
@PostMapping("...")
public ServiceResponse newService(@RequestHeader("form-class") String fullyQualifiedClassName, HttpServletRequest req)
throws ClassNotFoundException, IOException {
try (InputStream is = req.getInputStream()){
FormEntity formEntity =
(FormEntity) objectMapper.readValue(is, Class.forName(fullyQualifiedClassName));
// do something...
}
}
的值form-class應該是“FQCN”(完全限定的類名)。例如,如果您JVMFormEntity在com.example包裝中,則該值應為com.example.JVMFormEntity.
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/440623.html
