JSR-303 с сообщениями об ошибках Spring и Hibernate - PullRequest
0 голосов
/ 07 апреля 2011

То, что я хотел бы сделать, это иметь стандартное сообщение об ошибке, которое использует аннотацию для заполнения значения в указанном сообщении об ошибке.Код должен помочь объяснить.

У меня есть модель POJO, в которой есть поля с аннотациями JSR-303:

@Min(value = 1)
@Max(value = 9999)
private int someInt;

и НАСТОЯЩЕМУ, у меня есть два файла свойств: один длядержите метки для моих полей, а другую - для хранения фактических сообщений:

label.someInt=Some Integer Field
Min="{0}" must be no less than {value}

Затем я перебираю вещи, чтобы построить то, что я хочу:

for (FieldError a : result.getFieldErrors()) {
        boolean found = false;
        for (String b : a.getCodes()) {
            System.out.println(b);
            try {
                addErrorMessage(messageSource.getMessage(b,
                        new Object[] { new DefaultMessageSourceResolvable(
                            new String[] { "label." + a.getField() }
                        )},
                        null));
                found = true;
                break;
            } catch (Exception e){/* nom Exception */}
        }
        if (!found) {
            addErrorMessage(a.getDefaultMessage());
        }
    }

Это все хорошо и здорово, ноЯ хотел бы быть в состоянии придерживаться способа ведения дел на основе аннотаций и добавлять какие-то метки на полях.Например:

@Min(value = 1)
@Max(value = 9999)
@Label(value = "Some Integer Field")
private int someInt;

Тогда я мог бы написать вспомогательную функцию, которая просто использовала бы аннотацию, чтобы пометить сообщение об ошибке, которое я имею в файле свойств.Мне также нужно это для работы с ошибками валидации на основе Spring, такими как typeMismatch.Забавно, что.

Заранее спасибо за помощь!

1 Ответ

2 голосов
/ 07 апреля 2011

Загляните на этот форум: http://forum.springsource.org/archive/index.php/t-83353.html

или вы можете использовать стандартные ключи сообщений, поддерживаемые DefaultMessageCodesResolver

Похоже, оно уже реализовано.

...