00:00
我们来学习在抓兔里面如何自定义验证器。Two提供了比较多的内置的验证器。但是根据项目这个业务需要,我们很多时候呢,还需要来定义自己的验证器。我们后边我们就有一个这个要求,比方说我们来定义一个验证18位身份证号码的验证器,像这样的验证器它就没有内置,就需要我们自己来定义一个。我们现在的话就来看一下如何。定义一个验证器,并且给它使用起来。九。呃。定义。好了,我们想一下哈,我们想开发一个自定义验证器的话,应该分几步。
01:00
大家考虑一下,我们前边我们讲过一个自定义类型转换器那个步骤。在这块的话呢,是可以借鉴的。第一步。定义个。验证器的类。第二步。在配置文件中配置验证器。第三步。使用实际上的话呢,就是这样的。三个步骤,你说的话,实际上前面两个步骤OK,自定义验证器的类,这里边我们需要看一下。如何来定义这个延长器的类呢?啊,我们说。自定义。的验证器都需要实现一个接口,这个接口叫valid。
02:04
那。看一下这个接口吧。C ctrl t UV打开。大家看一下这个接口里边是不是有好多方法呀,一个一个实现的话很麻烦,这个时候我们会怎么想。我们应该想这个接口是不是会有一些实现类呢?如果要是有实现类的话,我们去继承那个实限类是不是就可以了呀?住地看一下挺多的哈。实际上呢,这个valid有一个实现类,不过这个实现类是一个抽象类,带一个A标记嘛,叫va叫valid support,这个valid接口还有一个子接口叫field valid。再打开,再关一下这个field valid呢,呃,有两个实现类,有一个是抽象的实现类,叫field valid support,还有一个是。
03:00
静态的一个内部类在这个S的,所以说这个核心的API实际上只有四个。Valid接口。子接口。Valid support实现类跟field valid support实现类。那么我们在具体开发的时候应该这样。说可以。选择实现。Editor sir。Po。要实现叫继承是吧。货还有一个叫。Field。Wear。哎,我们选择的直线这个和这个就可以了。C的T没问题。
04:00
CTRLCCTRLC问题。Valid support还是写错了是吧,Valid。我我刚才这样的话呢,就想看是不是写错了哈。OK啊,那具体应该怎么实现呢?我们说如果要实现一个一般验证的话成它。如果想实现一个字段验证的话,继承它。War。希望实现一个。一般的验证器。则可以译成这个valid support。里边提供了大部分方法的直线,我们只去直线。一些核心的方法就可以了。若希望实现一个。字段验证器。
05:03
则。可以一场。Fill the very little support。好了。后边的话呢,还有那具体应该如何实现呢。具体实现可以参考。目前已经有的能。好,就是如何来定义一个验证器,这边我们看如何来配置这个验证器。那某种情况下。RA兔会。类路径的目鹿甲。加载一个叫点X文件。
06:01
那在这个里面来找,有哪些验证器。在该文件中。加载燕。七那么这个文件的这个整个的这个,呃。文档的方式跟我们。Default XL是一样的,那个default是哪个呀?就是默认验证器的那个。配置文件。该文件的定义方式。红默认的验证器的那个。配置。你点哪个呀。我们前边的话呢。结果。看一下。默认的那个在。
07:00
对,这。那如果我要是那天要没有的话,现在怎样,这个时候的话呢,这个下面要是没有的话得。若倍镜下。啊,没有指定的验证器则。从一个钟下来。中的验证器。下载什么意思呢?就是说我使用了一个验证器,它会优先的在根目录下来找这个文件,看这里边有没有,如果这边没有的话呢,他就会上这个里边来找,懂了吧,使用啊。
08:07
和目前的天正气一样,就是该怎么用就怎么用,好了,我们来看我们这样的一个代码。示例代码,我们需要。这样的一件事叫。定义一个18位身份证的验证器。好了,这里面涉及到如何去进行身份证的这个验证,这个类呢,我已经写好了,我们直接用就可以了。我把这个先复制过来。往下翻。我也写好了一个测试方法,其中第一个呢。
09:01
确实是一个身份证,应该是什么呀。7月14号,而第二个的话呢,七月44号,我们知道没有这个44号第一个返回处,第二个返回false找一下。哎,True跟false,我们。进行这个身份验证的时候的话呢,我们使用。这个方法就可以了,那我创建这样的一个类调用这个方法就OK。这边看我们的笔记。我们首先来定义这样的一个验证器的一个类叫ID card valid。ID。那我是一个字段验证器,所以说我需要继承。Build political support。OK,这边有一个外地的方法好了。
10:03
这里边儿我们看我们需要分为哪几个步骤。E。需要获取字段的名字和值。第二步,慎重第三步。做。验证失败。得怎么办?我也不知道,反正是干点什么。嗯。这个具体实现就参考已有的验证器吧。我们找一下这个default还在不在。不在了。我重新打开。找到XO call。最后一个包。Default,诶,我们找一个已经有的验证期,比方说呃,这个require。
11:00
CC的D。应该是什么呀,是直线类是吧。怎么验证的?怎么验证的呀?这是获取这个字段名,获取字段值。然后呢,直接验证就可以了,过来吧。C。Card。Validator。验证验证的话呢,我们需要创建这个ID card。等于六。AD。Co。弄一下ID card点。Verify。我们要写这个。这个不值。
12:00
哦,这个值应该是一个形是吧。好了,如果这个值是false的话。False的话怎么样。我应该添加错误消息,怎么添加的哈,直接艾特error就可以了。拿过来。那就可以这样的话呢,我们这就写完了。一步,第二步。需要在根目录下定义一个valid的XL文件。根目录下定义一个。I。X键。啊,这个格式呢,跟这个default一模一样。我复制一份。Proceed。
13:07
我们把这个改成叫ad card。这个权利名呢,是我们定义的这个。不行了。最后一步使用,我需要在我的这个validation.jsp里边写上这样的一个。ID。Field。ID。Ifid error。Field name ID card,同样,我在action里边也需要这样的一个处境。Action。
14:01
这个吧。Private string ID。给你爱戴的方法。OK。然后呢,我需要在这个配置文件里边声明使用这个验证器使用的方式跟这个是一样的。下来。叫ID card,我使用这个验证机的名字呢,叫ID card。哎呀,你是小姐的吧?打开对。不需要传入任何的属性值。问题的话,这个message我直接写上了哈。
15:00
It is。Not a card。OK。跑一下。来,我们来看这会这个ID card。我实际上的话呢,我在这个测试里边,我有一个合法的,上面这个是合法的拿过来。后提交。我们看到。成功了是吧,成功了,因为其他几个我根本就没填是吧,OK,我现在我改一下改成四四。其他几个我没填,所以说其他几个的话呢。零线证就过了是吧,改成四次找一个,大家看是不是不是一个合法的ID啊。这样的话呢,自定义验证器就写完了,那完全是按照我们笔记上的这些步骤来写的。
16:05
OK,再看一下PPT。是定义验证器必须实现这个valid接口,我们也看到了这个validator support跟field validator support啊,这两个的话呢,都实现了这个接口啊,这个需要说一下是吧?若验证程序接需要接收一个输入参数的话,我们需要提供一个对应的属性,而且需要提供对应的set方法把这个复制一下。CTRLC过来。就像我们那个。那个验证器一样,我需要传入一个min和max OK,我定义那个属性,提供对应的set方法就可以了。那后边的话呢,这个我们刚才也说到了。再看一个问题,叫编程式验证抓to实际上提供了两种验证方式,一种方式是我们前面已经讲到的声明式验证。
17:06
就是通过配置文件的方式进行配置啊,我对哪个字段使用什么验证规则。那stra to自身提供了一些验证器,如果这些验证器要是不够的话,我们还可以添上我们自己定义的验证器。所以说我们推荐大家使用声明试验证。但r two也提供了编程式验证。什么叫编程验证啊?说白了就是写代码。那只要一个action内实现了Y接口的话,它就可以进行编程式验证了。那实际上这个action support已经实现了这个valid接口,我们的action只要继承这个action support,它就可以来进行。编程式验证。这个呢,就是编程式验证的一段代码,Validate里边对字段进行验证,如果验证要是出错的话,你可以ADD field error。
18:03
前边呢是字段名,后边是出错的消息,看到了吧?啊做一个了解就可以,我们不再举例子。
我来说两句