Java Bean Validation 验证以及分组验证
2017-10-29 00:00
246 查看
Java Bean Validation 验证以及分组验证
数据在前端验证后,在后端也会做同样的验证以增加程序的健壮性。最简单的是在controller层做判断,但是,如果每个接口都要对接收的参数做相同的判断,这无疑会增加冗余且不美观。这时可以使用注解验证的方式。
每一个模型对象后边都需要跟一个Errors或BindingResult对象来保存验证结果。
数据在前端验证后,在后端也会做同样的验证以增加程序的健壮性。最简单的是在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<ObjectError> 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"; } }
相关文章推荐
- java中一个汉字和一个字母所占内存字节比较以及后台验证的减半处理
- JAVA-26.2-jQuery总结以及表单验证
- java中身份证的验证以及身份证的各项的由来
- 用Java实现的一个密码验证 以及Java异常处理流程和runtime异常以及checked异常之间的区别
- [Java]利用拦截器和自定义注解做登录以及权限验证
- 【java项目实践】详解Ajax工作原理以及实现异步验证用户名是否存在(java版)
- java小项目-验证码的生成以及验证
- java Web中实现QQ邮箱验证以及验证码注册用户
- java中正则表达式的常用法以及规则,邮箱验证,密码等。
- java applet打jar包,以及数字验证
- JAVA分组以及JAVA分页
- 【java项目实践】具体解释Ajax工作原理以及实现异步验证username是否存在+源代码下载(java版)
- java正则表达式的基本语法以及不同环境的表单验证
- JAVA参数验证 Validation(二)分组校验&自定义校验
- java程序实现加密解密以及签名和签名验证
- 【java项目实践】详解Ajax工作原理以及实现异步验证用户名是否存在+源码下载(java版)
- java中一个汉字和一个字母所占内存字节比较以及后台验证的减半处理
- JAVA swing中JPanel如何实现分组框的效果以及设置边框颜色
- Java Date验证以及计算方法
- Java中Calendar类的简单使用方法,以及日期格式化的方法,字符串日期格式的验证