桌面应用程序中的弹簧验证

时间:2012-03-14 16:51:56

标签: java spring validation javabeans

这里我有一个我能想象的最基本的弹簧验证器的样本:-)。由于它是桌面应用程序,我没有运行容器,应该在某些时刻调用validate。
是否有任何实用程序以与弹簧容器相同的方式调用validate方法?或者调用验证就足够了?在这种情况下,我必须通过验证的Errors对象的具体实现是什么?

这是一个例子(主要是装饰性的):

首先我有一个Person类,其中包含Stirng firstName属性和String secondName属性:

public static class Person {
    public static final String PROP_FIRSTNAME = "firstName";
    String firstName;
    public static final String PROP_SECONDNAME = "secondName";
    String secondName;

    public String getFirstName() {return firstName;}
    public void setFirstName(String firstName) {this.firstName = firstName;}

    public String getSecondName() {return secondName;}
    public void setSecondName(String secondName) {this.secondName = secondName;}

}

然后我有一个PersonValidator,它只是检查Person是否有一个非null的firstName:

public static class PersonValidator implements Validator {

    public boolean supports(Class<?> clazz) {
        return Person.class.isAssignableFrom(clazz);
    }

    public void validate(Object target, Errors errors) {
        ValidationUtils.rejectIfEmpty(errors, Person.PROP_FIRSTNAME , "First name must be ");
    }

}

好的,现在问题是:如何使用它?

public static void main(String [] args) {

    Person p = new Person();

    PersonValidator v = new PersonValidator();

    //HOW TO PERFORM VALIDATION?
    //v.validate(p, null)

}

2 个答案:

答案 0 :(得分:3)

显然我知道这不是你所要求的,但现在就是这样。

如果简单验证是你唯一的事情,并且不打算使用IoC容器,我建议使用BeanValidation或类似的东西。

Here就是一个例子。

答案 1 :(得分:-2)

您需要做的就是创建一个BindException对象,其中包含要验证的对象和完全限定的类名。

然后使用ValidationUitls.invokeValidator()方法验证bean here

以下是一些示例代码,用于阐明我的意思:

    ApplicationContext context = new       ClassPathXmlApplicationContext("applicationContext.xml");

    Person person =  context.getBean(Person.class);

    PersonValidator  personValidator = context.getBean(PersonValidator.class);

    BindException errors = new BindException(person, Person.class.getName());
    ValidationUtils.invokeValidator(personValidator, person, errors);

    if(errors.hasErrors()){
        System.out.println(errors.getAllErrors());
    }