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。