2011-10-31 24 views
0

我想使用驗證而不是網絡控制器。假設我有一個Person類彈簧驗證不在網絡控制器內

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

我怎麼可以在控制檯應用程序中使用這個驗證例如?或者驗證僅適用於春季的Web應用程序?

回答

1

您可以在控制檯應用程序中使用驗證工具。您只需撥打ValidationUtils.invokeValidator(validator, object, errors)即可。您主要關注的是有一個合適的Errors實例。您可能最終會使用BeanPropertyBindingResult或子類AbstractErrors

您可能知道,但您應該諮詢Spring referencejavadoc。在未經測試的代碼

粗略估計:

Person person = new Person(); 
Errors errors = new BeanPropertyBindingResult(person, "person"); 
ValidationUtuls.invokeValidator(new PersonValidator(), person, errors); 
if (errors.hasErrors()) { ... } 

出於興趣,你爲什麼要使用Spring驗證優先於javax.validation?我發現使用javax.validaton/JSR-303 API通常更容易。 Hibernate Validator是參考實現和Spring integrates with JSR-303