时间:2021-05-20
两者区别
@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;}@RestControllerpublic 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; } }以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
1、@Valid与@Validated的区别1.1基本区别@Valid:Hibernatevalidation校验机制@Validated:SpringVali
概述:@Valid是使用Hibernatevalidation的时候使用@Validated是只用SpringValidator校验机制使用说明:java的JS
如果要添加接口校验,需要1,在接口方法中请求参数前面添加@Valid注解,不需要在接口的实现类上添加@Valid注解,也不需要@Validated注解:addA
本文实例讲述了Spring实战之Bean的作用域singleton和prototype用法。分享给大家供大家参考,具体如下:一配置二Beanpackageorg
在Ruby中类实例变量、类实例方法和类变量、类方法的区别比较微妙,而且用法也有相当的区别。本文探讨一下他们的定义和基本的使用场景,以抛砖引玉...一.类实例变量