我正在使用Spring Boot編寫Web服務。我有一個實體Animal
和枚舉Kind
可以是Kind.DOG
或Kind.CAT
。 Animal
類包含private Kind kind
作爲其實例變量之一。當我發出HTTP請求,我通過在一個字符串值kind
並且當所述請求映射到標頭:將字符串值綁定到Spring引導中的@RequestBody實體中的枚舉
@RequestMapping(method=RequestMethod.POST, value="/create") public ResponseEntity<Animal> createAnimal(@RequestBody Animal animal)
我想kind
到如果我在我通過在內部被轉換爲Kind.DOG
/Kind.CAT
任「狗」或「貓」。現在,如果我通過DOG
或CAT
,它工作正常,但如果小寫它不。有人能告訴我該怎麼做嗎?我試過如下:
@InitBinder
public void initBinder(WebDataBinder dataBinder) {
dataBinder.registerCustomEditor(Kind.class, new KindEnumConverter());
}
@RequestMapping(method=RequestMethod.POST, value="/create")
public ResponseEntity<Animal> createAnimal(@RequestBody Animal animal)
和
public class KindEnumConverter extends PropertyEditorSupport {
@Override
public void setAsText(String text) throws IllegalArgumentException {
setValue(Kind.valueOf(text.toUpperCase()));
}
}
,但沒有奏效。
看看從這篇文章接受的答案:https://stackoverflow.com/questions/39774427/springs-requestparam-with-enum –
我試過這兩種解決方案,但我認爲不同的是,他們的枚舉是一個直接的'@ RequestParam',但對我來說,它是'@ RequestBody'的一個實例。 – ion20
然後試着看看這個。與您的問題相同:https://stackoverflow.com/questions/33637427/spring-requestbody-and-enum-value –