#html #spring #spring-boot #thymeleaf
#HTML #весна #весенняя загрузка #thymeleaf
Вопрос:
Я получил исключение при использовании этих двух аннотаций в моем любимом приложении для весенней загрузки:
Тип содержимого ‘application/x-www-form-urlencoded;кодировка = UTF-8’ не поддерживается
Контроллер:
@PostMapping("/home/filter/edit")
public String processUpdateFilterForm(@ModelAttribute @Valid UserMatchSearchingFilterDTO userMatchSearchingFilterDTO,
BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
throw new ValidationException(bindingResult.toString());
}
userService.update(userMatchSearchingFilterDTO);
return REDIRECT_TO_HOME;
}
Код страницы:
<html>
<body>
<form method="post">
<h2>Edit filter</h2>
<div class="form-group has-feedback">
<div class="form-group">
<label class="col-sm-2 control-label">Minimum Age</label>
<div class="col-sm-10">
<input class="form-control" type="number" id="ageMin" name="ageMin" value="27"/>
</div>
</div>
</div>
<div class="form-group">
<br>
<div>
<button class="btn btn-default" type="submit">Update filter</button>
</div>
</div>
</form>
</body>
</html>
Могу ли я использовать весеннюю проверку без написания собственных валидаторов? Как мне нужно изменить свою страницу или контроллер? Большое спасибо.
Комментарии:
1. Используйте
@ModelAttribute
вместо@RequestBody
. Вы отправляете параметры запроса из формы, а не отправляете тело запроса в форме JSON или XML. Последнее требует@RequestBody
первых потребностей@ModelAttribute
. В форме используется привязка к данным, в теле используется сериализация.2. @M.Deinum Я изменил свой контроллер (посмотрите на сообщение, пожалуйста), но в нем по-прежнему нет ошибок… Я использую ‘javax.validation.constraints.@Max «. UPD. Он обновляет мои данные, но проверка не работает
3. Хорошо, что у вас есть аннотация, но без фактической реализации в пути к классу она ничего не делает. Убедитесь, что
spring-boot-starter-validation
это указано в вашем пути к классу (и то, что вы задаете сейчас, на самом деле совсем другой вопрос!).4. @M.Deinum спасибо!!! Вы правы, я добавил только api проверки без реализации.