【问题标题】:How customize spring validator?如何自定义spring验证器?
【发布时间】:2013-03-18 11:51:31
【问题描述】:

我想编写具有复杂逻辑的自定义验证器,该逻辑依赖于必须在启动时设置的某些属性。可以在spring配置文件中写component-scan标签,但是如何设置class或spring validater中的其他属性作为无状态类?

public class CustomValidator implements Validator{
    private Map<String,Integer> parameters;

     public boolean supports(Class clazz) {
        return ObjectToValidate.class.equals(clazz);    
    }

    public void validate(Object obj, Errors e) {
        ObjectToValidate  object = (ObjectToValidate) obj;

        switch (parameters.get(object.getIntegerProperty())) {
            case 1:
                //validation algorithm 1;
                break;

            case 2:
                //validation algorithm 2;
                break;

            //etc.
        }
    }

    public void setParameters(Map<String,Integer> parameters){
        this.parameters = parameters;
    }

}

【问题讨论】:

    标签: java spring validation spring-validator


    【解决方案1】:

    您应该在您的应用上下文中设置org.springframework.validation.beanvalidation.LocalValidatorFactoryBean

    它将向您的验证器注入他们需要的每个 @Autowired 属性。如果您不想使用自动装配,您应该将它们作为 bean 添加到您的应用上下文中。

    看这里:http://static.springsource.org/spring/docs/3.0.0.RC3/reference/html/ch05s07.html

    一切都解释清楚了。

    斯特凡诺

    【讨论】:

      猜你喜欢
      • 2014-09-24
      • 1970-01-01
      • 2022-07-13
      • 2012-11-20
      • 2013-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-26
      相关资源
      最近更新 更多