Spring @Valid和@Validated区别和用法实例
更新时间:2020年04月27日 11:17:53 作者:小伍2013
这篇文章主要介绍了Spring @Valid和@Validated区别和用法实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
两者区别
@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; } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
SpringBoot MongoCustomConversions自定义转换方式
这篇文章主要介绍了SpringBoot MongoCustomConversions自定义转换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-08-08启动异常invalid constant type:15的解决方案
今天小编就为大家分享一篇关于启动异常invalid constant type:15的解决方案,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧2018-12-12SpringBoot项目使用mybatis-plus逆向自动生成全套代码
在JavaWeb工程中,每一个SSM新项目或者说是SpringBoot项目也好,都少不了model、controller、service、dao等层次的构建。使用mybatis-plus逆向可以自动生成,感兴趣的可以了解一下2021-09-09
最新评论