В моем запросе POJO есть свойство Дата рождения, которое является String. В моем ответе POJO дата рождения - это DateTime. Я преобразовал его в DateTime, используя «новый DateTime (requestModel.getDateOfBirth ())». Тем не менее, он принимает только формат даты (который находится в строке) как «гггг-мм-дд». Когда я меняю формат даты запроса, выдается «500
Blockquote
». Вот мои POJO:
RequestModel. java
public class RequestModel {
@NotNull(message = "dateOfBirth cannot be null")
private String dateOfBirth;
public RequestModel(String dateOfBirth) {
super();
this.dateOfBirth = dateOfBirth;
}
public String getDateOfBirth() {
return dateOfBirth;
}
}
ResponseModel. java
public class ResponseModel {
private DateTime dateOfBirth;
public ResponseModel( DateTime dateOfBirth) {
super();
this.dateOfBirth = dateOfBirth;
}
public DateTime getDateOfBirth() {
return dateOfBirth;
}
}
MyController. java
@PostMapping(consumes = {
MediaType.APPLICATION_JSON_VALUE,
MediaType.APPLICATION_XML_VALUE
},
produces = {
MediaType.APPLICATION_JSON_VALUE,
MediaType.APPLICATION_XML_VALUE
})
public ResponseEntity<ResponseModel> create(@Valid @RequestBody RequestModel requestModel) {
ResponseModel response = new ResponseModel(new DateTime(requestModel.getDateOfBirth()));
return new ResponseEntity<ResponseModel>(response, HttpStatus.CREATED);
}
Это сообщение JSON, которое отлично работает:
{
"dateOfBirth" : "2012-12-12"
}
Следующее тело запроса выдает ошибку:
{
"dateOfBirth" : "12-12-2012",
}
Ошибка :
{
"timestamp": "2020-03-14T19:09:51.647+0000",
"status": 500,
"error": "Internal Server Error",
"message": "Invalid format: \"12-12-2012\" is malformed at \"12\"",
"path": "/myPath/"
}
Я хочу знать, как я могу улучшить логику контроллера c или дизайн для принятия любого формата даты в API? Спасибо за помощь