我读过这个指南:http://spring.io/guides/gs/validating-form-input/春天验证不遵守POJO原则
我看到验证表单的春天的做法是一个注释对象的 属性(可以是一个POJO) ,像@Min,@ Max,@Size等验证约束条件 。
这不是用这个 批注混淆POJO对象的最佳方法。
如何在春季框架中编写验证表单的代码?
我读过这个指南:http://spring.io/guides/gs/validating-form-input/春天验证不遵守POJO原则
我看到验证表单的春天的做法是一个注释对象的 属性(可以是一个POJO) ,像@Min,@ Max,@Size等验证约束条件 。
这不是用这个 批注混淆POJO对象的最佳方法。
如何在春季框架中编写验证表单的代码?
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
关于您是否应该在POJO上使用注释肯定存在一些争议。 我个人认为,如果你不打算在模块之间共享POJO,注释配置是完全可以接受的。
如果您希望验证约束配置为不带注释,则应该查看Hibernate Validator的(Hibernate Validator是此JSR 349的参考实现)XML配置。该配置的参考是here。
另外检查出this(稍微老一点)后的教程。