Spring @Valid和@Validated区别和用法实例
两者区别
@Valid |
@Validated | |
---|---|---|
标准 | 标准JSR-303规范 | 增强JSR-303规范 |
包 | javax.validation | org.springframework.validation |
验证结果 | BindingResultresult | BindingResultresult |
分组支持 | 不支持 | 支持 |
分组序列 | 不支持 | 支持 |
类型注解 | ? | 支持 |
方法注解 | 支持 | 支持 |
方法参数注解 | 支持 | 支持 |
构造函数注解 | 支持 | ? |
成员属性注解 | 支持 | 不支持 |
嵌套验证 | 支持 | 不支持 |
分组示例
publicinterfaceFirst{} publicinterfaceSecond{} publicclassUser{ //所有都验证 @NotNull(message="...") privateintid; //First才验证 @NotNull(message="...",groups={First.class}) privateStringusername; //First或Second才验证 @NotNull(message="...",groups={First.class,Second.class}) privateStringcontent; //First验证NotEmpty,Second验证Size @NotEmpty(message="...",groups={First.class}) @Size(message="...",min=3,max=8,groups={Second.class}) privateStringheight; } //只验证Second分组和没有分组的属性 publicStringsave(@Validated({Second.class})Useruser,BindingResultresult){ if(result.hasErrors()){ return"validate/error"; } return"redirect:/success"; }
分组序列
publicinterfaceGroupA{} publicinterfaceGroupB{} @GroupSequence({GroupA.class,GroupB.class}) publicinterfaceGroup{}
public@ResponseBodyStringsave(@Validated({Group.class})Useruser,BindingResultresult){ if(result.hasErrors()){ returnfalse; } returntrue; }
嵌套验证
publicclassItem{ @NotNull(message="id不能为空") @Min(value=1,message="id必须为正整数") privateLongid; @Valid @NotNull(message="props不能为空") @Size(min=1,message="至少要有一个属性") privateListprops; }
publicclassProp{ @NotNull(message="pid不能为空") @Min(value=1,message="pid必须为正整数") privateLongpid; @NotNull(message="vid不能为空") @Min(value=1,message="vid必须为正整数") privateLongvid; @NotBlank(message="pidName不能为空") privateStringpidName; @NotBlank(message="vidName不能为空") privateStringvidName; }
@RestController publicclassItemController{ @RequestMapping("/item/add") publicvoidaddItem(@ValidatedItemitem,BindingResultbindingResult){ doSomething(); } }
验证多个对象
@Controller publicclassPeopleController{ @RequestMapping("/add") public@ResponseBodyStringadd(@ValidatedPeoplepp,BindingResultresult1,@ValidatedPersonps,BindingResultresult2) { if(result1.hasErrors()) { returnfalse; } if(result2.hasErrors()) { returnfalse; } returntrue; } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。