0
私は春のバージョン4.2と春のブートを使用しています。私が欲しいのは、標準的な実体を保存することです、私は次のようなJSONリクエストボディ春休み投稿リクエスト列挙プロパティ
{
"standardName": "MyStandard",
"language": "Java",
}
を持って http://localhost:3000/api/standards/ れるポスト要求を持っています。 StandardEntityの 'language'プロパティはEnum型です。 私のコントローラメソッドは、この
@RequestMapping(method = RequestMethod.POST)
public ResponseEntity<Standard> createStandard(@Validated @RequestBody Standard standard) {
standardService.createStandard(standard);
return new ResponseEntity<Standard>(standard, HttpStatus.CREATED);
}
のように見えますが、コントローラ内部でstandard.getLangauge()は常にnullです。 私は@InitBinderを試し、@JsonCreatorを言語列挙型に追加しましたが、いずれも私のために働いていません。 私の列挙型は、この
public enum Language {
@JsonProperty("java")Java("java"),
@JsonProperty("sql")Sql("sql");
private String value;
private Language(String value) {
this.value = value;
}
public static Language fromValue(String value) {
for (Language language : values()) {
if (language.value.equalsIgnoreCase(value)) {
return language;
}
}
throw new IllegalArgumentException(
"Unknown enum type " + value + ", Allowed values are " + Arrays.toString(values()));
}
@Override
public String toString() {
return value;
}
@JsonCreator
public static Language create(String value) {
System.out.println("in json creator "+value);
if (value == null) {
throw new IllegalArgumentException();
}
for (Language v : values()) {
if (value.equals(v.getShortName())) {
return v;
}
}
throw new IllegalArgumentException();
}
あなたのenumを表示しますか? – Taylor
質問を列挙型で更新しました –