博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于Annotation的输入校验
阅读量:6720 次
发布时间:2019-06-25

本文共 1883 字,大约阅读时间需要 6 分钟。

这种基于Annotation的输入校验实质上也属于Struts 2“零配置”特性的部分,它允许使用Annotation来定义每个字段应该满足的规则,Struts 2com.opensymphony.xwork2.validator.annotations包下提供了大量校验器相关的Annotation,这些Annotation和前面介绍的验证器大致上一一对应,读者可以自行查阅API文档。

为了在Action类通过Annotation指定验证规则,经过如下配置即可:

Ø  使用验证器Annotation修饰Action里各属性对应的setter方法。

下面我们在前面I18NValidate应用的基础上进行修改,将该应用的WEB-INF\src\lee路径下的校验规则文件删除,修改该路径下的RegistAction.java文件,通过注释指定各属性应该满足的规则。修改后的Action代码如下所示。

程序清单:codes\04\4.2\annotation\WEB-INF\src\org\crazyit\app\action\RegistAction.java

 

 
  1. public class RegistAction extends ActionSupport  
  2. {  
  3.     private String name;  
  4.     private String pass;  
  5.     private int age;  
  6.     private Date birth;   
  7.     //name属性的setter和getter方法  
  8.     //使用Annotation指定必填、正则表达式两个校验规则  
  9.     @RequiredStringValidator(key = "name.requried" 
  10.         , message = "")  
  11.     @RegexFieldValidator(expression = "\\w{4,25}" 
  12.         ,key = "name.regex" , message = "")  
  13.     public void setName(String name)  
  14.     {  
  15.         this.name = name;  
  16.     }  
  17.     public String getName()  
  18.     {  
  19.         return this.name;  
  20.     }  
  21.     //pass属性的setter和getter方法  
  22.     @RequiredStringValidator(key = "pass.requried" 
  23.         ,message = "")  
  24.     @RegexFieldValidator(expression = "\\w{4,25}" 
  25.         ,key = "pass.regex" ,message = "")  
  26.     public void setPass(String pass)  
  27.     {  
  28.         this.pass = pass;  
  29.     }  
  30.     public String getPass()  
  31.     {  
  32.         return this.pass;  
  33.     }  
  34.     //age属性的setter和getter方法  
  35.     @IntRangeFieldValidator(message = "" 
  36.         , key = "age.range", min = "1" 
  37.         , max = "150")  
  38.     public void setAge(int age)  
  39.     {  
  40.         this.age = age;  
  41.     }  
  42.     public int getAge()  
  43.     {  
  44.         return this.age;  
  45.     }  
  46.     //birth属性的setter和getter方法  
  47.     //使用Annotation指定日期范围校验规则  
  48.     @DateRangeFieldValidator(message = "" 
  49.         , key = "birth.range", min = "1900/01/01" 
  50.         , max = "2050/01/21")  
  51.     public void setBirth(Date birth)  
  52.     {  
  53.         this.birth = birth;  
  54.     }  
  55.     public Date getBirth()  
  56.     {  
  57.         return this.birth;  
  58.     }  
  59. }  

上面Action的粗体字代码使用了验证器Annotation修饰了各属性的setter方法,这样Struts 2就知道了各属性应该满足怎样的规则。通过在Action中使用Annotation指定各字段应该满足的校验规则,就可以避免书写XML校验规则文件。

关于使用Annotation来代替XML配置文件,这是JDK 1.5新增Annotation后的一个趋势,使用这种方式无须编写XML文件,从而可以简化应用开发,但带来的副作用是所有内容都被写入Java代码中,会给后期维护带来一定困难。

 

转载地址:http://bgdmo.baihongyu.com/

你可能感兴趣的文章
网络分流器-网络分流器-5G的关键技术第一篇
查看>>
区块链之Hyperledger(超级账本)Fabric v1.0 的环境搭建(超详细教程)
查看>>
大快搜索数据爬虫技术实例安装教学篇
查看>>
Navicat使用教程:从MySQL中的多个表和视图中获取行计数(第3部分)
查看>>
进程和计划任务
查看>>
python机器学习实战(一)
查看>>
rm删除破折号开头的文件或目录
查看>>
找工作的程序员必懂的Linux
查看>>
滴滴发布2018年度总结:又有网友炸锅了
查看>>
PCB画板软件那么多,我到底该学习哪一个?
查看>>
linux创建用户与用户组
查看>>
如何从Spotify Music中删除DRM?
查看>>
VR开发者为Labo VR辩护 预计这可能是任天堂进军VR的开始
查看>>
全面解析大数据框架Hadoop主要模块
查看>>
手写调用门
查看>>
海恩法则与墨菲定律
查看>>
linux RHEL 解决中文网页乱码和界面英文
查看>>
linux中oracle的日常维护命令
查看>>
Linux 修改IP地址和网关
查看>>
linux查看硬件信息
查看>>