00:00
各位同学大家好,在前面内容中呢,咱们完成了三种校验方式,第一个通过valid接口实现,第二个基于注解实现,第三个基于方法进行校验。那咱下面看第四部分,第四部分咱们讲什么呢?它叫做自定义校验,什么叫定?比如家看啊,我们刚在类里解,如我括not black等等,这些注解能满足咱们校验的规则。但是比如说我现在觉得这些注解呢,不能满足咱的需求,那我可以怎么做,我可以自己来定一个注解,里边自己写规则,这就叫自定义校验,那咱下面进行实现,怎么实现?很简单啊,咱们可以参考它自带的这个功能,比如咱把这个打开,大家看是不是一个注解,那咱怎么做,我们也定一个注解,然后注解中也写这些参数,包括你看啊,它的默认的提示信息,包括它的组,包括其他值,然后咱们需要写一个校验器的类,实现我们真正这个校验。
01:10
那下面按照这个部分,我们来具体写一下自定义调研规则,给各位做个实现。我把它啊,咱们这里边首先咱们建个包,这个包我就叫这个for啊,咱算是第四个啊,然后在里边的第一部分,咱们先来建个注解,就这个注解呢,我们起个名字,比如咱就做这么一个实啊,让他就是不能有空格的这么一个判断,那我们起个名字叫这个cannot。Blank。不能有空格。这是我。创建一个注解,然后创建注解之后,在注解上面呢,加上相关这个原注解,咱就参考这个啊,把这个我就直接复制了,咱就以它这为例,大家看啊,第一个作用位置,比如说咱现在比如说肯定用在我们的属性上,其实加这个可以了,咱就复制第二个在runtime中生效。
02:08
那把这个拿过来,这是加的这个部分,然后加上之后继续来加,加这个document。把这个加上,然后之后呢,在里边注意啊,我们还要加个注解给大家记,还加个什么注解呢,它叫这个。Construct这注解表示我们现在要指定你那个校验器这类,咱们实现这个真正的校验规则,那我在里边啊,加上我们那个校验器的这个类,给它起个名字,这名字我就叫cannot valid。咱们点上它的class,所以现在把这个完成,然后这个类咱们先给他做个创建,一会儿我们再进行具体实现,那我现在啊,在这位置把这类咱们创建出来。现在啊,这个基本结构我们就完成,然后完成之后我们继续来写啊,在这个里边呢,加上相关的属性,咱们还是参考它,因为过程应该都差不多,我就把这部分啊,咱就直接复制了,然后咱给他改一下就可以了,因为就是这个结构。
03:16
把这个拿过来。然后啊,咱们来看啊,里边的内容到底都是什么。首先第一部分的是这个默认提示的错误信息,那咱给他改一下啊,比如就改一说这个不能包含空格。这个我们写一下,然后下面下值,包括组,包括负载,包括它里边如果你有多个,就是指定多个的时候使用这个啊,这里边比如我给他稍微改一下啊,前面不需要改,然后这里边呢,加上我们这个注解cannot blank。加上它指定多个的时候用这个,所以现在啊,这部分我们就完成,完成之后呢,下面我们写这个类。
04:04
就这个在里边,需要我们真正这个校验的这个过程。然后这个类怎么做呢?们让一个接口,这个接口我们。这个。就是它,然后里边呢,加上我们的泛型,首先第一个就是咱们这个注解的名字cannot。Blank第二个加上的类型,咱们是词缀啊,不那个空格,这给它加上,加上之后我们实现里边那个方法。它这里边有这么两个方法啊,这里边有一个叫意思外的,然后这个方法咱在这里边实现我们的那个具体过程,就是做我们真正那个校验的这个逻辑,那咱在里边我们来写一下啊,然后你看啊,我这里写完之后,这位置是不是就不报错了,因为他要求我们实验这个接口,咱在这个默认方法中实验咱们最终这个校验的规则。
05:08
那咱们啊做个实现,首先名字改一下啊,比如这个我改成value啊,这个我们就叫contexttest啊,为了方便啊,然后下面我们写一下啊,首先第一个在里边呢,我们先做一个判断,因为这Y6就是我们的值,那怎么判断呢?首先第一个如果说Y6值不等于,那等于now,咱就不需要做了,然后并且Y6值里边它包含这个空格,我们加个加上一个这个空格,那这个时候我们开始做这个提示,那提示中呢,这里边啊给大家注意,我们刚才呢,有这么咱先做个return啊,如果它里边有空格,那咱就return false,在过程中呢,刚才咱写了一个默认的这个错误提示,其实可以用它,当然可以把提示给它改一下,这个过程呢,改的过程我就复制了啊,就是一个简单的实现。
06:04
我把这个咱直接拿过来啊,咱们看一下就可以了。因为是固定过程啊,我就直接复制了。然后大家看这个写法,就是首先我们这里边获取默认这个提示信息,应该就是它,然后咱们禁用默认提示,设置新的提示,比如设置这个说不能包含空格,包括用方法进行设置,所以现在啊,把这完成return false表示它里边就执行这个校验,它里边包含了空格。所以现在咱就完成了自定义校验这个注解的实现,咱们的名字叫cannot blank,这个我们就讲到这里,咱们再看一遍啊,然后最终做测试,做法就是加上一个注解,里边加上它相关属性,这些你可以参考其他注解进行实现。包括这个名字不要写错,然后在里边加多一个注解,加上你的计算器的类,在里边实现咱们的校验规则,我刚才加上这规则,如果它不等于空,并且它包含了这个空格,那咱们做这个提示啊,包括提示我这里设置新的提示,不设置它用默认这个提示,最终return false。
07:17
现在完成完成之后在里边我们试一下这个效果啊,比如说咱们现在啊这么来做。我在这里边呢,呃,咱们这么来实现啊,为了明确我就加上一个新的属性,咱进行测试,加上一个private,比如叫,然后在上呢,加上们这个注解这个cannot,把这个给加上。加上之后呢,生成它的get和set方法,把这生成,然后咱们设置值啊,它有空格,看它会有什么提示,那咱们试一下啊,找到我们那个测试类里边,咱随便找一个就可以了,比如说我现在啊,我就找我的,呃,就找这个吧啊然后在里边我们输入这个信息,比如这里边有这个名称啊,它里边有这个手机号,手机号呢,这里边之前因为现在咱不需要校验啊,咱就输入一个正确的手机号了啊,为了测试这个就是空格这个东西。
08:24
我们就写一个正确的啊,然后这里边set在里边,我们给它加上一个值,比如加一个test。空格啊,加上A加上。加上硅谷啊,这里边肯定是包含空格,然后现在咱们把它执行试一下这个结果,看它最终是怎么样的。现在我执行。等他出来结果啊。然后大家看这里边提示我们不能包含空格,这是那个默认的信息,因为咱刚才改过了,改成了不能包含空格这个英文提示,所以现在啊,证明我们写这个自定义这个校验规则生效了,咱们在使用上边加这个注解,就能进行包含空格的这么一个校验。
09:12
所以现在啊,我们就做到这里,也就是说以上我们把此里边这个validation数据校验就完成了,给大家演示了四种方式,第一种实现接口实现,第二个基于注解实现,第三个在方法中加注解实现,第四个自定义注解实现,它的自定义校验规则。
我来说两句