#java #spring #spring-boot #spring-mvc #thymeleaf
#java #весна #spring-boot #spring-mvc #thymeleaf
Вопрос:
Я реализую проверку формы и сталкиваюсь с проблемами с проверкой BigInteger в сообщениях об ошибках thymeleaf. Вот моя аннотация свойства:
@Digits(integer = 9, fraction = 0, message="Must be a positive integer")
private BigInteger myInteger;
Контроллер:
@PostMapping("/")
public String whatever(@Valid @ModelAttribute Entity myEntity, BindingResult result) {
if (result.hasErrors()) {
return "index";
}
//TODO
return "index";
}
И, наконец, HTML-код
<span th:if="${#fields.hasErrors('myEntity.myInteger')}"
th:errors="*{myEntity.myInteger}"></span>
Теперь это работает нормально для других моих переменных BigDecimal, но BigInteger заставляет Thymeleaf отображать a NumberFormatException
вместо моего пользовательского сообщения "Must be a positive integer."
, предположительно из-за какого-то приоритета в обработке ошибок, с которым я не знаком. Я пытался искать ответы, но большинство из них направляют меня к какому messages.properties
-либо основанному решению, которого нет в моей папке проекта. Что мне нужно сделать, чтобы мое пользовательское сообщение отображалось вместо NumberFormatException
?
Комментарии:
1. покажите свой запрос, т.е. сущность
2. Вы можете просто создать
messages.properties
вresources
папке и добавитьtypeMismatch.table.myInteger = Must be a positive integer
. Гдеtable
ваше имя таблицы в нижнем регистре.3. @Seldo97 Большое вам спасибо! Я пробовал это раньше, но это не сработало, потому что я не вводил его в нижнем регистре, спасибо, что специально указали на это
4. @TypoTC Я добавил ответ, вы можете пометить его как решение вашей проблемы.
Ответ №1:
Вы можете просто создать messages.properties
в resources
папке и добавить typeMismatch.table.myInteger = Must be a positive integer
. Где «таблица» — это имя вашей сущности в нижнем регистре.