Раньше никогда не пользовался кастомными Editors, а теперь вдруг припекло.
Можно посмотреть, что имею в виду, на примере стандартного класса CustomDateEditior
Регаю их в контролере вот так:
@InitBinder
protected void initBinder(WebDataBinder binder) {
DateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy");
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
binder.registerCustomEditor(MyTime.class, new CustomMyTimeEditor(true));
}
Так вот если в дату или время вписать чушь (asdasdasd), то вместо нормальной валидации вылетает binding error - type mismatch. Ну понятно, он пытается распасить дату, у него вылетает экзепшен, и приплыли.
(Причем по привычке он пишет просто Bad Request, и чтобы распечатать ошибку на странице - нужно провести небольшую работу)
Я подсмотрел, какие коды он ждёт в бандле с мессаджами ошибок, и добавил эти коды, например:
typeMismatch.formDto.dateFrom=В этом поле должна быть дата, а не фигня всякая
К сожалению, он всё так же просто кидает binding exception, и сообщение не юзает.
При этом если не произойдет binding exception и едитор отдаст нормальный объект, все остальные валидаторы (работающие уже на уровне объекта) работают ОК.
Не могли бы вы подсказать, как правильно прописать валидацию в custom property editor?
Возможно можно как-то отвалидировать строку еще до попадания её в едитор? Чтобы отвалидировать «строку как строку», raw input, - всякими регэкспами, например.