Hibernate Validator 6.0.7 Final
杂货铺的小掌柜
这个作者很懒,什么都没留下…
展开
-
@Valid或@Validated校验日期格式
太简单了,下面是现成的代码,直接拷贝就能用,具体细节可博主。原创 2024-07-04 15:52:11 · 715 阅读 · 0 评论 -
关于Hibernate Validator在应用场景方面的一点思考
个人觉得:Hibernate Validator只适用于校验逻辑比较简单的场景,对于校验逻辑非常复杂的情况,建议还是老老实实写代码去处理。比如说,只需要对每个字段做独立校验、对多个关联字段做简单校验,可以用Hibernate Validator来做。...原创 2021-07-08 12:50:53 · 108 阅读 · 0 评论 -
validation-api中@GroupSequence的使用
考虑一种场景:一个bean有3个属性(假如说是attrA、attrB、attrC)需要做校验。默认情况下,validation-api对这3个属性的校验顺序是随机的。也就是说,可能先校验attrA,再校验attrB,最后校验attrC,也有可能先校验attrB,再校验attrC,最后校验attrA。那么,如果我们的需求是先校验attrA,再校验attrC,最后校验attrB。validation...原创 2020-03-04 21:06:42 · 2492 阅读 · 0 评论 -
Hibernate Validator 6.0.7.Final 之六(自定义枚举类型的约束)
在对bean的属性进行校验的时候,经常会碰到下面这种情况:假设有这样一个属性,名为attr,我们需要它的可取值固定在一个枚举中。举个例子:被校验的bean名为People,People中有一个String类型的属性sex,我们要求该属性的取值只能是"male"和"female"。这种校验并不复杂,直接看代码好了。被校验的属性 /** * 合伙人类型: 1-企业 2-个人...原创 2019-02-14 15:43:33 · 353 阅读 · 0 评论 -
Hibernate Validator 6.0.7 Final 之五(分组的继承)
在Hibernate Validator 6.0.7 Final 之五(初识分组校验)中,我们对分组有了初步认识。同时,在最后的测试中,我们看到,如果想对某分组进行校验,我们需要明确将该分组列出来。那么,如果我们需要在校验A分组的时候,同时将B分组包含进来,也就是说,在校验的时候,虽然我们只是指定了A分组,但是A分组和B分组上的约束都生效了。这个问题就是本文要讲解的–分组的继承。下面通过一个例子来...原创 2018-12-16 13:04:39 · 473 阅读 · 2 评论 -
Hibernate Validator 6.0.7 Final 之五(初识分组校验)
首先,解释一下什么是分组校验?所谓分组,就是允许我们在校验过程中指定使用哪些约束。比如说:一个被校验的bean有10个属性。在某次校验中,我们只想校验前5个属性,后5个属性不想校验(也就是说,定义在前五个属性上的约束生效,而定义在后五个属性上的约束不生效);在另一次校验中,我们只想校验后5个属性,而不想校验前五个属性。要实现这个目标,我们可以对属性进行分组,然后在实际校验的时候明确指定我们要校验哪...原创 2018-12-16 12:24:16 · 909 阅读 · 0 评论 -
Hibernate Validator 6.0.7.Final 起步
数据校验是一个很常见的工作,它贯穿于各个层次,从展现层到持久层。通常情况下,如果同样的校验逻辑被应用到各个层次的话,非常容易出错,也很耗时。为了避免重复的校验,开发者通常将校验逻辑绑定到模型上;这样做,校验逻辑看起来就像是模型类的元数据一样。 对比下面2张图看一下: 第一张图中,校验逻辑散布在各个层次;第二张图中,校验逻辑集中到模型中。JSR 380 - Bean Validati...原创 2018-04-21 16:28:02 · 4057 阅读 · 2 评论 -
Hibernate Validator 6.0.7.Final 之一(声明Bean约束之field级别的约束)
bean校验中的约束是通过Java注解的形式表现出来的(例如,@NotNull是一个非空约束),再细分的话,有4种类型的约束,它们分别是:field级别的约束、property级别的约束、容器元素的约束和类级别的约束。本文讲解第一种情况,也就是field级别的约束field级别的约束的例子public class Car { @NotNull private ...原创 2018-04-21 17:00:22 · 413 阅读 · 0 评论 -
Hibernate Validator 6.0.7.Final 之一(声明Bean约束之property级别的约束)
承接上文,本文讲解property级别的约束。如果我们的模型类使用的是标准的Java bean的话,我们也可以使用property级别的约束来替代field级别的约束。public class Car { private String manufacturer; private boolean isRegistered; public Car(String m...原创 2018-04-21 17:10:52 · 354 阅读 · 0 评论 -
Hibernate Validator 6.0.7.Final 之一(声明Bean约束之class级别的约束)
field级别的约束和property级别的约束都是针对单个属性的,而类级别的属性则是针对整个对象的,这在一个对象的多个属性之间具有相关性的情况下是非常有用的。对于下面这个类,我们应该确保乘客的数量不能多于座位的数量,也就是属性seatCount和passengers之间具有相关性,此时,class级别的约束就有了用武之地@ValidPassengerCountpublic clas...原创 2018-04-21 17:49:49 · 316 阅读 · 0 评论 -
Hibernate Validator 6.0.7.Final 之一(声明Bean约束之约束的继承性之一)
当一个类实现了某接口或者继承了某类的时候,父类型的约束将会被子类型继承。父类public class Car { private String manufacture; private int seatCount; @NotNull(message = "制造商不能为空") public String getManufacture() { ...原创 2018-04-22 08:32:13 · 449 阅读 · 1 评论 -
Hibernate Validator 6.0.7.Final 之一(声明Bean约束之约束的继承性之二)
承接Hibernate Validator 6.0.7.Final 之一(声明Bean约束之约束的继承性之一)。本文使用field级别的约束来测试一下约束的继承性。父类public class Car { @NotNull(message = "制造商不能为空") private String manufacture; @Min(value = 2, m...原创 2018-04-22 08:51:58 · 293 阅读 · 0 评论 -
Hibernate Validator 6.0.7.Final 之一(声明Bean约束之级联约束)
前几篇文章讲的校验都是针对简单属性,那么,如果一个bean的属性是一个复杂对象呢,我们该怎么校验,其实也简单,只需要在这个属性上使用@Valid注解就可以了。Person的定义public class Person { @NotNull(message = "不能没有名字") @NotBlank(message = "名字不能为空字符串") private...原创 2018-04-22 09:10:57 · 460 阅读 · 0 评论 -
Hibernate Validator 6.0.7.Final 之一(声明Bean约束之容器元素的约束)
首先,我们需要知道什么是容器元素–其实就是List、Set、Map等。我们也知道,使用容器元素的时候,需要指定容器能容纳的数据的类型,例如,List<String>就是说这个List容器可以容纳String类型,这里的String叫做参数化类型。本文要讲的就是对参数化类型约束。 需要注意的是,如果想要将一个约束应用到参数化类型上,那么这个约束的定义中的@Target中必须包含...原创 2018-04-22 10:24:33 · 393 阅读 · 2 评论 -
Hibernate Validator 6.0.7.Final 之二(详解Validator和ConstraintViolation)
Validator接口在bean的校验中扮演非常重要的角色。本文将详细讲解该接口。获取该接口的方法ValidatorFactory factory = Validation.buildDefaultValidatorFactory();validator = factory.getValidator();该接口中的重要方法<T> Set<Cons...原创 2018-04-23 12:50:28 · 14935 阅读 · 3 评论 -
Hibernate Validator 6.0.7.Final 之三(声明方法约束)
本文要讲解的是怎样声明方法约束。 首先,我们要明白什么是方法约束:其实就是对方法的参数和返回值进行约束,这里说的方法包括构造方法。下面这个例子就是方法约束,更准确地说,它是参数约束。public class RentalStation { // 构造方法 public RentalStation(@NotNull String name) {} // 普通方法...原创 2018-04-23 16:10:58 · 376 阅读 · 3 评论 -
Hibernate Validator 6.0.7.Final 之三(方法约束之级联约束)
和bean属性约束之级联约束一样,方法约束也支持级联约束。直接看例子:Car定义public class Car { @NotNull private String manufacturer; @NotNull @Size(min = 2, max = 14) private String licensePlate; publi...原创 2018-04-23 16:44:41 · 448 阅读 · 0 评论 -
Hibernate Validator 6.0.7.Final 之六(自定义约束之一)
虽然说Bean Validation API和Hibernate Validator给我们提供了很多内置的约束(如:@NotNull, @Size等),但是,这些内置的约束总有不能满足业务需求的时候。此时,我们很自然就想到了自己定义约束。 在Hibernate Validator中,要实现自定义约束,需要经过下面三个步骤:创建一个约束注解实现一个校验器定义默认的错误消息 ...原创 2018-05-12 17:49:25 · 1046 阅读 · 0 评论 -
Hibernate Validator 6.0.7 Final 之五(@GroupSequenceProvider的使用)
Hibernate Validator 提供了"根据对象状态动态重定义默认分组"的接口。什么意思呢?考虑下面这个场景:假如一个bean有3个属性,分别是attrA, attrB和attrC。当attrA属性的值是value1,我们需要对attrB进行校验;当attrA属性的值是value2的时候,我们需要对attrC进行校验。为了实现上面这个目的,我们需要实现DefaultGroupSeque...原创 2018-12-20 19:26:01 · 2757 阅读 · 4 评论