Spring验证不在web控制器内

Spring验证不在web控制器内,spring,Spring,我希望使用验证,而不是web控制器。假设我有一个班上的人 public class Person { private String name; private String surname; //getters and setters ... } 我还有一个验证器类: public class PersonValidator implements Validator { @Override public boolean supports(Class&l

我希望使用验证,而不是web控制器。假设我有一个班上的人

public class Person {
    private String name;
    private String surname;
    //getters and setters
...
}
我还有一个验证器类:

public class PersonValidator implements Validator {

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

    @Override
    public void validate(Object target, Errors errors) {
    ValidationUtils.rejectIfEmptyOrWhitespace(errors, "name", "name.empty");
    ValidationUtils.rejectIfEmptyOrWhitespace(errors, "surname",
        "surname.empty");
    }
}
公共类PersonValidator实现验证器{
@凌驾
公共布尔支持(类clazz){
返回人.class.equals(clazz);
}
@凌驾
公共无效验证(对象目标、错误){
ValidationUtils.rejectIfEmptyOrWhitespace(错误,“name”,“name.empty”);
ValidationUtils.RejectIFEmptyYorWhitespace(错误,“姓氏”,
“姓空”);
}
}

例如,我如何在控制台应用程序中使用该验证器?或者验证仅适用于spring中的web应用程序?

您可以在控制台应用程序中使用验证工具。只需调用
ValidationUtils.invokeValidator(验证器、对象、错误)
。你主要关心的是有一个合适的例子。您可能最终会使用或子类化

你可能知道,但你应该咨询弹簧和弹簧

对未测试代码的粗略猜测:

Person person = new Person();
Errors errors = new BeanPropertyBindingResult(person, "person");
ValidationUtuls.invokeValidator(new PersonValidator(), person, errors);
if (errors.hasErrors()) { ... }
出于兴趣,为什么要优先使用Spring验证?我发现使用javax.validaton/API通常更容易。是参考和实现