日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hibernate Validator用法

發布時間:2025/3/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hibernate Validator用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

一、Hibernate ValiDator介紹

Bean Validation是JSR303的定義,Hibernate Validator是對BeanValidation的實現,同時附加了幾個自己的注解。

二、Hibernate Validator支持的注解?

Bean Validation 中內置的 constraint @Null 被注釋的元素必須為 null @NotNull 被注釋的元素必須不為 null @AssertTrue 被注釋的元素必須為 true @AssertFalse 被注釋的元素必須為 false @Min(value) 被注釋的元素必須是一個數字,其值必須大于等于指定的最小值 @Max(value) 被注釋的元素必須是一個數字,其值必須小于等于指定的最大值 @DecimalMin(value) 被注釋的元素必須是一個數字,其值必須大于等于指定的最小值 @DecimalMax(value) 被注釋的元素必須是一個數字,其值必須小于等于指定的最大值 @Size(max=, min=) 被注釋的元素的大小必須在指定的范圍內 @Digits (integer, fraction) 被注釋的元素必須是一個數字,其值必須在可接受的范圍內 @Past 被注釋的元素必須是一個過去的日期 @Future 被注釋的元素必須是一個將來的日期 @Pattern(regex=,flag=) 被注釋的元素必須符合指定的正則表達式 Hibernate Validator 附加的 constraint @NotBlank(message =) 驗證字符串非null,且長度必須大于0 @Email 被注釋的元素必須是電子郵箱地址 @Length(min=,max=) 被注釋的字符串的大小必須在指定的范圍內 @NotEmpty 被注釋的字符串的必須非空 @Range(min=,max=,message=) 被注釋的元素必須在合適的范圍內

三、代碼演示

1.pom文件

<dependency><groupId>javax.el</groupId><artifactId>javax.el-api</artifactId><version>2.2.4</version></dependency><dependency><groupId>org.glassfish.web</groupId><artifactId>javax.el</artifactId><version>2.2.4</version></dependency>

2.Bean

public class Student {interface GroupA {}interface GroupB {}interface GroupC {}@NotNull(message = "姓名不能為空", groups = GroupA.class)private String name;private int age;@Range(min = 1, max = 2, groups = GroupB.class)private Double money;@Size(min = 1, max = 3)private String address;@Size(min = 1, max = 2, groups = GroupC.class)private List<String> registerClass;@Email(groups = GroupB.class)private String email;

3.驗證代碼

public static void main(String[] args) {Student student = new Student();//student.setName("Tom");student.setAddress("浙江省杭州市");student.setAge(101);student.setMoney(101D);student.setEmail("as");student.setRegisterClass(Lists.newArrayList("Englist","Math","haha"));ValidatorFactory factory = Validation.buildDefaultValidatorFactory();Validator validator = factory.getValidator();Set<ConstraintViolation<Student>> constraintViolationSet = validator.validate(student, GroupA.class,GroupB.class);for (ConstraintViolation<Student> constraintViolation : constraintViolationSet) {System.out.println(constraintViolation.getPropertyPath() + constraintViolation.getMessage());}}

除了支持基本已經實現的驗證功能之外,還支持分組,針對不同組進行驗證。

?

四、Bean?Validator的擴展

下面實現一個Validator,目的是檢測一個List里面的所有元素在一定的范圍,如果超過一定的范圍或者不是Number類型的就返回提示

1.定義一個validator注解

@Constraint(validatedBy = CheckListRangeValidator.class) @Target({ElementType.FIELD, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface CheckListRange {String message() default "{List里面的元素必須大于min 小于max}";int min() default Integer.MIN_VALUE;int max() default Integer.MAX_VALUE;Class<?>[] groups() default {};Class<? extends Payload>[] payload() default {}; }

2.validator的實現

public class CheckListRangeValidator implements ConstraintValidator<CheckListRange, List> {private int min;private int max;public void initialize(CheckListRange constraintAnnotation) {this.min = constraintAnnotation.min();this.max = constraintAnnotation.max();}public boolean isValid(List value, ConstraintValidatorContext context) {for (Object object : value) {if (object == null || !(object instanceof Number)) {return false;}if (((Number)object).doubleValue() < min || ((Number)object).doubleValue() > max) {return false;}return true;}return false;}}

3.Bean里面使用自定義validator注解

public class Student {interface GroupA {}interface GroupB {}interface GroupC {}@NotNull(message = "姓名不能為空", groups = GroupC.class)private String name;private int age;@Range(min = 1, max = 2, groups = GroupB.class)private Double money;@Size(min = 1, max = 3)private String address;@Size(min = 1, max = 2, groups = GroupC.class)private List<String> registerClass;@Email(groups = GroupB.class)private String email;@CheckListRange(min = 1, max = 100, message = "List中元素必須在大于等于1,小于等于100", groups = GroupC.class)//當使用自定義注解的時候一定要加上@Valid不然不會被識別@Valid private List<? extends Number> scoreList;}

4.檢測代碼

public class MainTest {public static void main(String[] args) {Student student = new Student();//student.setName("Tom");student.setAddress("浙江省杭州市");student.setAge(101);student.setMoney(101D);student.setEmail("as");student.setRegisterClass(Lists.newArrayList("Englist","Math","haha"));student.setScoreList(Lists.newArrayList(-1.1D,3D,3D,3D));ValidatorFactory factory = Validation.buildDefaultValidatorFactory();Validator validator = factory.getValidator();Set<ConstraintViolation<Student>> constraintViolationSet = validator.validate(student, GroupC.class);for (ConstraintViolation<Student> constraintViolation : constraintViolationSet) {System.out.println(constraintViolation.getPropertyPath() + constraintViolation.getMessage());}} }

5.最后結果

四月 01, 2017 2:36:54 下午 org.hibernate.validator.internal.util.Version <clinit> INFO: HV000001: Hibernate Validator 5.3.4.Final name姓名不能為空 scoreListList中元素必須在大于等于1,小于等于100 registerClass個數必須在1和2之間Process finished with exit code 0

五、Spring MVC中的使用

/*** 備注:此處@Validated(PersonAddView.class) 表示使用PersonAndView這套校驗規則,若使用@Valid 則表示使用默認校驗規則,@RequestMapping(value = "/student", method = RequestMethod.POST)public void addStudent(@RequestBody @Validated({GroupC.class}) Student student) {System.out.println(student.toString());}/*** 修改Person對象* 此處啟用PersonModifyView 這個驗證規則*/@RequestMapping(value = "/student", method = RequestMethod.PUT)public void modifyStudent(@RequestBody @Validated(value = {GroupA.class}) Student student) { System.out.println(student.toString());}

?

轉載于:https://my.oschina.net/u/2250599/blog/872199

總結

以上是生活随笔為你收集整理的Hibernate Validator用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 天天看片天天操 | 欧美片 | 亚洲情热 | 欧美成人精品一区二区三区在线看 | 中文精品在线观看 | 玉蒲团在线 | 欧美日韩一区二区在线观看视频 | 国产自偷| 三级网站免费 | 成人交配视频 | 成人福利视频网 | 亚洲国产黄色 | 精品久久久久久久 | 成人黄色电影在线 | 亚洲色偷精品一区二区三区 | 国产高清一 | www五月天com| 国产传媒视频在线 | 日本大尺度激情做爰hd | 粉嫩视频在线观看 | 中文在线a√在线8 | 久久久久成人网 | 探花视频在线版播放免费观看 | 国产欧洲亚洲 | 91成人在线播放 | 日韩中文字幕网站 | www.嫩草.com| 久久一级大片 | 欧美日韩一区二区三区电影 | 正在播放一区 | jizz欧美性23| 香蕉网站在线观看 | 大地资源高清播放在线观看 | 国产区av| 久久99亚洲精品 | 亚洲永久精品在线观看 | 男人天堂网在线视频 | 帮我拍拍漫画全集免费观看 | va视频在线 | 天天干天天舔 | 小情侣高清国产在线播放 | 欧美精品免费在线 | 成人777| 欧美福利视频在线 | 啪啪网视频 | 精品黑人一区二区三区在线观看 | 深爱综合网 | 少妇精品偷拍高潮白浆 | 秋霞av鲁丝片一区二区 | 日韩精品中文字幕在线播放 | 日韩精品――色哟哟 | 天天综合网入口 | av网站有哪些 | 亚洲丁香 | 国产精品久久久一区 | 国产成人宗合 | 啪啪av | 精品久久久久久久久久久 | 91麻豆国产在线观看 | 日韩精品视频在线观看网站 | 亚洲欧洲色 | 手机在线永久免费观看av片 | 亚洲国产精品成人久久蜜臀 | 日韩精品一区二区三区在线 | 可以免费看的毛片 | 男生舔女生的屁股 | 国产美女作爱全过程免费视频 | 五月天婷婷在线播放 | 国产视频导航 | 国产日韩欧美视频 | 日本欧美在线播放 | 国产精品成人在线观看 | 91精品国产91久久久久久久久久久久 | 久久久情 | va视频在线观看 | 亚洲精品高清视频在线观看 | 国产一区二区三区色淫影院 | 夜夜骑日日操 | 日韩淫 | 日韩国产欧美在线观看 | 法国极品成人h版 | 九九热精品视频 | 91porny在线| 爱啪啪影视 | 国产成a人亚洲精v品在线观看 | 男阳茎进女阳道视频大全 | 中文字幕理伦片免费看 | 美女隐私黄www网站动漫 | 俄罗斯丰满熟妇hd | 日韩和的一区二区 | 激情综合一区二区三区 | 国产精品三级在线观看无码 | 在线免费看污视频 | 调教女m荡骚贱淫故事 | 在线观看污视频网站 | 国产高潮失禁喷水爽到抽搐 | 欧美性猛交99久久久久99按摩 | 日本寂寞少妇 | 91无打码|