两者区别
@valid | @validated | |
---|---|---|
标准 | 标准jsr-303规范 | 增强jsr-303规范 |
包 | javax.validation | org.springframework.validation |
验证结果 | bindingresult result | bindingresult result |
分组支持 | 不支持 | 支持 |
分组序列 | 不支持 | 支持 |
类型注解 | ? | 支持 |
方法注解 | 支持 | 支持 |
方法参数注解 | 支持 | 支持 |
构造函数注解 | 支持 | ? |
成员属性注解 | 支持 | 不支持 |
嵌套验证 | 支持 | 不支持 |
分组示例
public interface first{} public interface second{} public class user { // 所有都验证 @notnull(message = "...") private int id; // first 才验证 @notnull(message = "...", groups = { first.class }) private string username; // first 或 second 才验证 @notnull(message = "...", groups = { first.class, second.class }) private string content; // first 验证 notempty,second 验证 size @notempty(message = "...", groups = { first.class }) @size(message = "...", min = 3, max = 8, groups = { second.class }) private string height; } // 只验证 second 分组和没有分组的属性 public string save(@validated( { second.class }) user user, bindingresult result) { if (result.haserrors()) { return "validate/error"; } return "redirect:/success"; }
分组序列
public interface groupa {} public interface groupb {} @groupsequence( { groupa.class, groupb.class }) public interface group {}
public @responsebody string save(@validated({ group.class }) user user, bindingresult result) { if(result.haserrors()) { return false; } return true; }
嵌套验证
public class item { @notnull(message = "id不能为空") @min(value = 1, message = "id必须为正整数") private long id; @valid @notnull(message = "props不能为空") @size(min = 1, message = "至少要有一个属性") private list<prop> props; }
public class prop { @notnull(message = "pid不能为空") @min(value = 1, message = "pid必须为正整数") private long pid; @notnull(message = "vid不能为空") @min(value = 1, message = "vid必须为正整数") private long vid; @notblank(message = "pidname不能为空") private string pidname; @notblank(message = "vidname不能为空") private string vidname; }
@restcontroller public class itemcontroller { @requestmapping("/item/add") public void additem(@validated item item, bindingresult bindingresult) { dosomething(); } }
验证多个对象
@controller public class peoplecontroller { @requestmapping("/add") public @responsebody string add(@validated people pp, bindingresult result1, @validated person ps, bindingresult result2) { if(result1.haserrors()) { return false; } if(result2.haserrors()) { return false; } return true; } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。