这篇文章主要为大家展示了Spring @Valid和@Validated有什么区别,内容简而易懂,希望大家可以学习一下,学习完之后肯定会有收获的,下面让小编带大家一起来看看吧。

两者区别


@Valid@Validated标准标准JSR-303规范增强JSR-303规范包javax.validationorg.springframework.validation验证结果BindingResult resultBindingResult 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; } }

以上就是关于Spring @Valid和@Validated有什么区别的内容,如果你们有学习到知识或者技能,可以把它分享出去让更多的人看到。