如何定制弹簧验证器?

时间:2013-03-18 11:51:31

标签: java spring validation spring-validator

我想编写具有复杂逻辑的自定义验证器,这取决于必须在starup中设置的某些属性。可以在spring配置文件中编写组件扫描标签,但如何在class或spring validater中设置其他属性作为无状态classess?

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;
    }

}

1 个答案:

答案 0 :(得分:0)

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

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

点击此处:http://static.springsource.org/spring/docs/3.0.0.RC3/reference/html/ch05s07.html

一切都得到了解释。

斯特凡诺