Spring MVC验证错误代码在哪里解决了?

Jam*_*hon 24 java validation spring-mvc error-code

我试图在Spring MVC框架下编写验证器,但文档中有一个明显的遗漏.当调用将错误传递给Errors对象时,大多数方法都需要一个名为errorCode的String参数.这些errorCodes,如果我理解正确,可以作为特定错误消息的替代品.但我不能为生活找出这些代码映射到的地方.

这是我从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.");
       }
    }
 }
Run Code Online (Sandbox Code Playgroud)

任何人都可以开导我吗?

Jac*_*son 16

我正在使用默认的消息解析器.

在我dispatcher-servlet.xml,我有

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basename" value="messages" />
</bean>
Run Code Online (Sandbox Code Playgroud)

然后在我的classes目录的顶层我有一个名为"messages.properties"的文本文件,其中包含这样的映射:

error.firstname.null=Please enter your first name.
error.lastname.null=Please enter your last name.
Run Code Online (Sandbox Code Playgroud)

如果您想使用自定义MessageCodesResolver,您可以实现MessageCodeResolver接口,然后为给定的控制器定义解析器,如下所示:

<bean id="myController">
  <property name="messageCodesResolver" ref="myMessageCodesResolver" />
</bean>
Run Code Online (Sandbox Code Playgroud)

目前没有一种方法可以MessageCodeResolver全局定义自定义; 这里有一个增强请求.用绿豆继承,使所有控制器豆从一个控制器bean定义继承的一种方法,描述在这里.