java分组校验_Java Bean Validation 验证以及分组验证

Java Bean Validation 验证以及分组验证

数据在前端验证后,在后端也会做同样的验证以增加程序的健壮性。最简单的是在controller层做判断,但是,如果每个接口都要对接收的参数做相同的判断,这无疑会增加冗余且不美观。这时可以使用注解验证的方式。

普通验证:

假如需要新增一个学生,学生姓名不允许为空。

1. 首先创建学生实体类,并在属性上加上注解。

public class Student{

//主键

private String id;

//名称

@NotNull(message="姓名不能为空")

@Size(min=1, max=6,message="姓名长度为1~6")

private String name;

//...getter and setter

}

2. 然后在controller的bean加上@Valid注解

在需要校验的Model上面加上@Valid即可;

每一个模型对象后边都需要跟一个Errors或BindingResult对象来保存验证结果。

@RequestMapping(value = "/add")

@ResponseBody

public String add(@RequestBody @Valid Student student, BindingResult result) {

// 校验数据的合法性

if (result.hasErrors()) {

List errorList = result.getAllErrors();

for (ObjectError error : errorList) {

return error.getDefaultMessage(); //返回错误消息

}

}

}

}

分组验证:

在新增或者编辑学生时,对参数的校验也是不一样的,例如,新增学生时只需验证学生姓名即可,而编辑学生时需要验证学生id和学生姓名。这时就需要使用分组验证。

1. 首先在学生实体类中增加两个空接口,分组接口

分组接口只是普通的接口,主要用于标识。

/**

* 此接口用于标识新增Student时的参数校验规则

*/

public interface Add{

}

/**

* 可以在一个Model上面添加多套参数验证规则,此接口用于标识更新Student时的参数校验规则

*/

public interface Update{

}

2. 然后为属性上的注解注明分组

public class Student{

//主键

@NotNull(message="学生id不能为空",groups = {Add.class})

private String id;

//名称

@NotNull(message="姓名不能为空",groups = {Add.class,Update.class})

@Size(min=1, max=6,message="姓名长度为1~6",groups = {Add.class,Update.class})

private String name;

//...getter and setter

public interface Add{

}

public interface Update{

}

}

3. 启用校验并指定使用哪个校验规则

通过@Validate注解标识要验证的分组;如果要验证两个的话,可以这样@Validated({Add.class, Update.class})。

@RequestMapping(value = "/add")

@ResponseBody

public String add(@RequestBody @Validated({Add.class}) Student student, BindingResult result) {

// 校验数据的合法性

if (result.hasErrors()) {

return "error";

}

}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值