Я пытаюсь настроить приложение Spring Boot 2.1.5 / Spring MVC, используя Thymeleaf в качестве движка шаблонов. У меня есть bean-компонент, который будет поддерживать мою форму (методы получения и установки для краткости опущены):
public class SchoolNightForm {
private String orgName;
private String address;
private String location;
private String city;
private String state;
private String zip;
private String contactName;
private String phone;
@NotEmpty(message = "Enter a valid email.")
private String email;
@Positive(message = "Value must be positive.")
private int totalStudents;
private LocalDate dateRequested;
}
Шаблон HTML:
<div class='form-group col-sm-9'>
<label for='dateRequested'>Date Requested</label>
<input type='date' required class='form-control' id='dateRequested' name='dateRequested'
th:field='*{dateRequested}' />
<small class='text-danger' th:if="${#fields.hasErrors('dateRequested')}" th:errors='*{dateRequested}'>Valid date required</small>
</div>
В соответствии с Документами Thymeleaf я настроил службу преобразования:
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addFormatters(FormatterRegistry registry) {
registry.addFormatter(dateFormatter());
}
@Bean
public DateFormatter dateFormatter() {
return new DateFormatter("yyyy-MM-dd");
}
}
Первоначально я использовал реализацию DateFormatter по умолчанию (не предоставлен формат String), но после просмотра сообщения об ошибке и просмотра формата, который форма передавала контроллеру, я изменил его соответствующим образом:
Failed to convert property value of type java.lang.String to required type java.time.LocalDate for property dateRequested; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [java.time.LocalDate] for value 2019-05-28; nested exception is java.lang.IllegalArgumentException: Parse attempt failed for value [2019-05-28]
Мои методы контроллера:
@GetMapping(value = "school-night")
public String getSchoolNight(Model model) {
model.addAttribute("schoolNightForm", new SchoolNightForm());
return "bk-school-night";
}
@PostMapping(value = "school-night")
public String postSchoolNigh(@Valid SchoolNightForm schoolNightForm, BindingResult result)
throws MessagingException {
if (result.hasErrors()) {
return "bk-school-night";
}
emailService.schoolNightFotm(schoolNightForm);
return "confirm";
}
Эта ошибка возникает при отправке запроса. Любой совет будет оценен.