2014-04-29 70 views

回答

2

Spring为验证(和数据绑定)提供了一个不排除其中之一的设计。 Spring提供了一个Validator接口,您可以使用它来验证对象。

验证接口工作使用错误对象,以便在验证,验证可以给错误的对象报告验证失败。

人POJO:

 
public class Person { 

    private String name; 
    private int age; 

    // the usual getters and setters... 
} 

实现一个验证

 
public class PersonValidator implements Validator { 

    /** 
    * This Validator validates just Person instances 
    */ 
    public boolean supports(Class clazz) { 
     return Person.class.equals(clazz); 
    } 

    public void validate(Object obj, Errors e) { 
     ValidationUtils.rejectIfEmpty(e, "name", "name.empty"); 
     Person p = (Person) obj; 
     if (p.getAge() 110) { 
      e.rejectValue("age", "too.darn.old"); 
     } 
    } 
} 

Documentaction约Validation, Data Binding in Spring Framework 3.x

0

关于您是否应该在POJO上使用注释肯定存在一些争议。 我个人认为,如果你不打算在模块之间共享POJO,注释配置是完全可以接受的。

如果您希望验证约束配置为不带注释,则应该查看Hibernate Validator的(Hibernate Validator是此JSR 349的参考实现)XML配置。该配置的参考是here

另外检查出this(稍微老一点)后的教程。