Hibernate валидатор: как справиться с опрокидыванием? (28/14/2009 становится 28/2/2010) - PullRequest
1 голос
/ 09 декабря 2010

Я использую валидатор гибернации для проверки моих форм.У меня «проблема» в том, что 9-е число из 14-го месяца становится вторым месяцем в следующем году.(просто пример сценария).

Мне было интересно, как я могу предотвратить преобразование по умолчанию и вместо этого показать свое сообщение об ошибке.

Кто-нибудь также знает, как я могу отобразитьсоответствующее сообщение, если мой пользовательский редактор выдает исключение IllegalArgumentException?

@InitBinder
    public void initBinder(WebDataBinder binder) {
        CustomDateEditor editor = new CustomDateEditor(new SimpleDateFormat("dd/MM/yyyy"), true);
        binder.registerCustomEditor(Date.class, editor);
    }

Я зарегистрировал customEditor, потому что у spring-portlet-mvc были некоторые проблемы с привязкой.

1 Ответ

2 голосов
/ 09 декабря 2010

Это поведение контролируется 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); 
...