千家信息网

java中的Bean Validation怎么使用

发表于:2024-11-21 作者:千家信息网编辑
千家信息网最后更新 2024年11月21日,本篇内容介绍了"java中的Bean Validation怎么使用"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能
千家信息网最后更新 2024年11月21日java中的Bean Validation怎么使用

本篇内容介绍了"java中的Bean Validation怎么使用"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

概念:java中的Bean Validation是一个数据验证的规范。

说明:Hibernate Validator是Bean Validation的一个具体实现。

举例:在springMVC中使用Hibernate Validator

1)maven依赖:                        javax.validation                validation-api                1.1.0.Final                                org.hibernate                hibernate-validator                5.1.2.Final        2)JavaBean:        import javax.validation.constraints.NotNull;        import org.hibernate.validator.constraints.NotBlank;        /**         * 在需要进行校验的属性上添加相应的注解:         *          * 1)Bean Validation 提供的 constraint:                *            [@Null](https://my.oschina.net/u/561366)         被注释的元素必须为 null                *         [@NotNull](https://my.oschina.net/notnull)    被注释的元素必须不为 null                *         @AssertTrue     被注释的元素必须为 true                *         [@AssertFalse](https://my.oschina.net/u/2430840)    被注释的元素必须为 false                *         @Min(value)     被注释的元素必须是一个数字,其值必须大于等于指定的最小值                *         @Max(value)     被注释的元素必须是一个数字,其值必须小于等于指定的最大值                *         @DecimalMin(value)  被注释的元素必须是一个数字,其值必须大于等于指定的最小值                *         @DecimalMax(value)  被注释的元素必须是一个数字,其值必须小于等于指定的最大值                *         @Size(max=, min=)   被注释的元素的大小必须在指定的范围内                *         @Digits (integer, fraction)     被注释的元素必须是一个数字,其值必须在可接受的范围内                *         @Past            被注释的元素必须是一个过去的日期                *         @Future          被注释的元素必须是一个将来的日期                *         @Pattern(regex=,flag=)  被注释的元素必须符合指定的正则表达式           *                       * 2)Hibernate Validator 特有的 constraint:         *         @NotBlank(message =)       验证字符串非null,且长度必须大于0          *         @NotEmpty                               被注释的字符串或集合的必须非空                *         @Email                                被注释的元素必须符合email的格式                *         @Length(min=,max=)              被注释的字符串的大小必须在指定的范围内                      *         @Range(min=,max=,message=)      被注释的元素必须在合适的范围内          *                  */                public class User {                                 @NotBlank(message = "name is null!")                private String name;                @NotNull(message = "age is null!")                private Integer age;                private String email;                private String address;                // getter and setter ..                        }        3)控制器:        import javax.validation.Valid;        import org.springframework.validation.BindingResult;        import org.springframework.validation.ObjectError;        import org.springframework.web.bind.annotation.RequestMapping;        import org.springframework.web.bind.annotation.RequestBody;        import org.springframework.web.bind.annotation.RequestMethod;        @RestController        @RequestMapping("/sys")        public class UserController {                /**                 * 1.给需要校验的参数添加 @Valid注解                  * 2.给方法添加一个类型为 BindingResult的参数,用来封装 校验的结果                 */                @RequestMapping(value = "/user/add", method = RequestMethod.POST)                public String addUser(@Valid @RequestBody User req, BindingResult bindingResult) {                                                if (bindingResult.hasErrors()) {                                List allErrors = bindingResult.getAllErrors();                                List msgs = new ArrayList();                                for (ObjectError objectError : allErrors) {                                        String msg = objectError.getDefaultMessage();                                        msgs.add(msg);                                }                                String paramErrorMsg = StringUtils.join(msgs, " & ");                                return paramErrorMsg;                        } else {                                System.out.println("do add user.");                                return "success!";                        }                }        }4)接口测试:        地址:http://localhost:8081/jxn-web/api/sys/user/add                请求类型:Content-Type: application/json        参数:                {"name":"","age":null}            ==> 响应内容:age is null! & name is null!                {"name":"","age":""}            ==> 响应内容:age is null! & name is null!                {"name":"jack","age":"17"}      ==> 响应内容:success!

常见错误:

报错:javax.validation.UnexpectedTypeException: HV000030: No validator could be found for type: java.lang.Integer.分析:是由于@NotBlank修饰了Integer、Long等引用类型的属性eg:        @NotBlank        private Integer age;        修正:应该使用@NotNull来修饰引用类型的属性。        @NotNull        private Integer age;

"java中的Bean Validation怎么使用"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

0