Где разрешены коды ошибок проверки w760> MVC?

Я пытаюсь написать валидаторы в рамках Spring MVC, но в документации есть явное отсутствие. При вызове передачи ошибки в объект Errors большинство методов ожидают параметр String с именем errorCode. Эти коды ошибок, если я правильно понимаю, выступают в качестве stand-in для конкретных сообщений об ошибках. Но я не могу понять, где эти коды сопоставляются.

Вот пример того, что я имею в виду от Spring MVC Javadoc;

public class UserLoginValidator implements Validator {
 private static final int MINIMUM_PASSWORD_LENGTH = 6;
 public boolean supports(Class clazz) {
 return UserLogin.class.isAssignableFrom(clazz);
 }
 public void validate(Object target, Errors errors) {
 ValidationUtils.rejectIfEmptyOrWhitespace(errors, "userName", "field.required");
 ValidationUtils.rejectIfEmptyOrWhitespace(errors, "password", "field.required");
 UserLogin login = (UserLogin) target;
 if (login.getPassword() != null
 && login.getPassword().trim().length() < MINIMUM_PASSWORD_LENGTH) {
 errors.rejectValue("password", "field.min.length",
 new Object[]{Integer.valueOf(MINIMUM_PASSWORD_LENGTH)},
 "The password must be at least [" + MINIMUM_PASSWORD_LENGTH + "] characters in length.");
 }
 }
 }

Может кто-нибудь просветить меня?

3 ответа

Я использую распознаватель сообщений по умолчанию.

В моем dispatcher-servlet.xml у меня есть

<bean id="messageSource">
 </bean>

а затем на верхнем уровне моего каталога классов у меня есть текстовый файл с именем "messages.properties", который содержит такие сопоставления:

error.firstname.null=Please enter your first name.
error.lastname.null=Please enter your last name.

Если вы хотите использовать собственный MessageCodesResolver, вы можете реализовать интерфейс MessageCodeResolver, а затем определить свой резольвер для данного контроллера следующим образом:

<bean id="myController">
 </bean>

В настоящее время нет способа определить пользовательский MessageCodeResolver глобально; там запрос улучшения для этого здесь. Один подход с использованием наследования bean, чтобы сделать весь контроллер beans наследованием от одного определения контроллера bean, описан здесь.


Они разрешены вашим MessageSource и MessageCodeResolver.

Здесь - соответствующий раздел справочного руководства:

Вывод сообщений, соответствующих ошибкам проверки, - это последнее, что нам нужно обсудить. В приведенном выше примере мы отклонили имя и возрастное поле. Если мы собираемся выводить сообщения об ошибках с помощью <code>MessageSource</code>, мы сделаем это, используя код ошибки, который мы указали при отклонении поля (в данном случае - "имя" и "возраст" ). Когда вы вызываете (прямо или косвенно, используя, например, класс <code>ValidationUtils</code>) <code>rejectValue</code> или один из других методов отклонения из интерфейса <code>Errors</code>, базовая реализация будет не только зарегистрировать код, который вы передали, но также и ряд дополнительных кодов ошибок.


По какой-то причине, если вы хотите разрешить сообщения в контроллере, похожие на теги error: jsp, вы можете сделать следующее:

//result is BindingResult
 List<string> errors = new ArrayList<string>();
 List<objecterror> allErrors = result.getAllErrors();
 for (ObjectError error : allErrors) {
 String message = messageSource.getMessage(error, null);
 errors.add(message);
 }
</objecterror></string></string>

licensed under cc by-sa 3.0 with attribution.