Тъй като използвате RequestBody с application/json тип съдържание, Spring ще използва своя MappingJackson2HttpMessageConverter за да конвертирате вашия JSON в обект от вашия тип. Въпреки това низът за дата, който предоставяте, 11/14 не съвпада с нито един от предварително конфигурираните модели за дата и следователно не може да го анализира правилно. MappingJackson2HttpMessageConverter , или по-точно ObjectMapper който върши работата, не знае нищо за @DateTimeFormat , пролетна анотация.
Ще трябва да кажете на Джаксън кой модел на дата искате да използвате. Можете да направите това с персонализиран десериализатор на дата
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 ако сте използвали URL-кодирани параметри на формуляр с @ModelAttribute . Spring регистрира някои преобразуватели, които могат да преобразуват стойност на низ от параметри на заявка в Date обект. Това е описано в деокументация.