RequestBodyを使用しているため application/jsonを使用 コンテンツタイプの場合、SpringはそのMappingJackson2HttpMessageConverterを使用します JSONを自分のタイプのオブジェクトに変換します。ただし、指定した日付文字列、11/14 事前設定された日付パターンのいずれとも一致しないため、正しく解析できません。 MappingJackson2HttpMessageConverter 、より具体的にはObjectMapper それは仕事をします、@DateTimeFormatについて何も知りません 、Springアノテーション。
使用する日付パターンをジャクソンに伝える必要があります。カスタム日付デシリアライザーを使用してこれを行うことができます
public class CustomDateDeserializer extends JsonDeserializer<Date> {
@Override
public Date deserialize(JsonParser jp, DeserializationContext ctxt)
throws IOException, JsonProcessingException {
SimpleDateFormat format = new SimpleDateFormat("MM/yy");
String date = jp.getText();
try {
return format.parse(date);
} catch (ParseException e) {
throw new JsonParseException(e);
}
}
}
次に、フィールドに注釈を付けて、ジャクソンがフィールドを逆シリアル化する方法を認識できるようにします。
@JsonDeserialize(using = CustomDateDeserializer.class)
private Date test;
@DateTimeFormatを使用できます @ModelAttributeでURLエンコードされたフォームパラメータを使用していた場合 。 Springは、文字列値をリクエストパラメータからDateに変換できるいくつかのコンバータを登録します 物体。 これについては、 deocumentation。