Hibernate Validator: Как обрабатывать Rollover? (28/14/2009 становится 28/2/2010)
-
25-09-2019 - |
Вопрос
Я использую Hibernate Validator, чтобы подтвердить мои формы. У меня есть «проблема», что 9-й 14-й месяц становится второй месяц в следующем году. (Просто ru Пример сценария).
Мне было интересно, как я могу помешать преобразованию по умолчанию и вместо этого отображать пользовательское сообщение об ошибке для него.
Кто-нибудь также знает, как я могу показать соответствующее сообщение, если мой пользовательский редактор бросает незаконноларгментациюException?
@InitBinder
public void initBinder(WebDataBinder binder) {
CustomDateEditor editor = new CustomDateEditor(new SimpleDateFormat("dd/MM/yyyy"), true);
binder.registerCustomEditor(Date.class, editor);
}
Я регистрировал Customedortor, потому что Spring-Portlet-MVC имел некоторые проблемы с привязкой.
Решение
Это поведение контролируется DateFormat.setLenient()
и не имеет ничего общего с проверкой (с setLentient(false)
Это дает ошибку несоответствия типа на фазе связывания):
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
df.setLenient(false);
CustomDateEditor editor = new CustomDateEditor(df, true);
binder.registerCustomEditor(Date.class, editor);