Hibernate Validator: Как обрабатывать Rollover? (28/14/2009 становится 28/2/2010)

StackOverflow https://stackoverflow.com/questions/4400291

  •  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); 
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top