Webサービスを作成するためにSpringブートを使用しています。私はエンティティAnimal
と列挙型Kind
を持っており、Kind.DOG
またはKind.CAT
のいずれかになります。 Animal
クラスは、そのインスタンス変数の1つとして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 –
私は両方のソリューションを試しましたが、違いはenumは直接 '@ RequestParam'ですが、私にとっては' @ RequestBody'のインスタンスです。 – ion20
これを調べてみてください。あなたと同じ問題:https://stackoverflow.com/questions/33637427/spring-requestbody-and-enum-value –