Spring @Valid和@Validated区别和用法实例

网友投稿 285 2022-12-08


Spring @Valid和@Validated区别和用法实例

两者区别

@Valid

@Validated

标准

标准jsR-303规范

增强JSR-303规范

javax.validation

org.springframework.validation

验证结果

BindingResult result

BindingResult result

分组支持

不支持

支持

分组序列

不支持

支持

类型注解

支持

http://

方法注解

支持

支持

方法参数注解

支持

支持

构造函数注解

支持

http:// ?

成员属性注解

支持

不支持

嵌套验证

支持

不支持

分组示例

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 = "...VMKshXoiN", groups = { First.class, Second.class })

private String content;

// First 验证 NotEmpVMKshXoiNty,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 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;

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SpringBoot静态资源路径配置及主页显示
下一篇:Spring boot集成Go
相关文章

 发表评论

暂时没有评论,来抢沙发吧~