- 浏览: 310284 次
最新评论
-
nucleus:
为什么都是没有图的。。。。。。。求图片啊
《研磨struts2》第七章 值栈和OGNL 之 7.4 ActionContext和ServletActionContext -
nucleus:
为什么都是没有图的。。。。。。。求图片啊
《研磨struts2》第七章 值栈和OGNL 之 7.4 ActionContext和ServletActionContext -
nucleus:
为什么都是没有图的。。。。。。。求图片啊
《研磨struts2》第七章 值栈和OGNL 之 7.4 ActionContext和ServletActionContext -
nucleus:
为什么都是没有图的。。。。。。。求图片啊
《研磨struts2》第七章 值栈和OGNL 之 7.4 ActionContext和ServletActionContext -
hunanjun000:
《研磨struts2》第四章 Action 之 4.5 Action的其它重要知识
10.4 内建验证器
10.4.1概述
Struts2的验证框架已经为我们建立了足够多的内建验证器,以满足不同的验证要求,接下来就来逐一学习这些内建的验证器。
Struts2的内建验证器的声明文件被放置在xwork-core-2.1.6.jar文件中,其位置为/com/opensymphony/xwork2/validator/validators/default.xml,内容为:
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE validators PUBLIC
- "-//OpenSymphony Group//XWork Validator Config 1.0//EN"
- "http://www.opensymphony.com/xwork/xwork-validator-config-1.0.dtd">
- <!-- START SNIPPET: validators-default -->
- <validators>
- <validator name="required" class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/>
- <validator name="requiredstring" class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/>
- <validator name="int" class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/>
- <validator name="long" class="com.opensymphony.xwork2.validator.validators.LongRangeFieldValidator"/>
- <validator name="short" class="com.opensymphony.xwork2.validator.validators.ShortRangeFieldValidator"/>
- <validator name="double" class="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator"/>
- <validator name="date" class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"/>
- <validator name="expression" class="com.opensymphony.xwork2.validator.validators.ExpressionValidator"/>
- <validator name="fieldexpression" class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/>
- <validator name="email" class="com.opensymphony.xwork2.validator.validators.EmailValidator"/>
- <validator name="url" class="com.opensymphony.xwork2.validator.validators.URLValidator"/>
- <validator name="visitor" class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/>
- <validator name="conversion" class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator"/>
- <validator name="stringlength" class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/>
- <validator name="regex" class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator"/>
- <validator name="conditionalvisitor" class="com.opensymphony.xwork2.validator.validators.ConditionalVisitorFieldValidator"/>
- </validators>
- <!-- END SNIPPET: validators-default -->
在这个文件中,每个内建验证器都以一个<validator>元素出现,其name属性为验证器的名字,而class属性为这个验证器的实现类。注意:在前面的配置中也接触到了<validator>元素,但是此<validator>元素是在定义一个验证器,而不是像前面那样,是在引用一个验证器。
10.4.2类型转换错误验证器(conversion)
conversion验证器用来验证类型转换时是否出错。如果一个类型为int的参数接到了“18a”这个字符串,conversion验证器就会报错。
conversion验证器既可以用于字段验证器,又可以用于动作验证器。
10.4.3整数验证器(int)
int验证器用来验证一个整数型参数是否在指定的范围内。如果一个已经被成功转换为int的属性不在验证器指定的范围内,int验证器就会报错。
int验证器可以有两个参数:
- min用来指定可接受范围的最小值。
- max用来指定可接收范围的最大值。
注意:conversion验证器验证的是参数能不能被正确转化为整数,int验证器是在参数已经被正确的转化为整数之后,再考察它的范围。因此,如果想限制年龄文本框填入整数类型的数字,并且在18岁以上,需要先引用conversion验证器检查用户填入的是否是一个整数,然后再引用int验证器来检查用户填入的年龄是否大于等于18。
int验证器既可以用于字段验证器,又可以用于动作验证器。
10.4.4短整数验证器(short)和长整数验证器(long)
short验证器和long验证器与int验证器非常相似,都是用来验证参数是否在指定范围之内,就不去赘述了。
short验证器和long验证器既可以用于字段验证器,又可以用于动作验证器。
10.4.5日期验证器(date)
date验证器用来验证一个日期型参数是否在指定的范围内。如果一个已经被成功转换为date的属性不在验证器指定的范围内,date验证器就会报错。
date验证器可以有两个参数:
- min用来指定可接受范围的最小值。
- max用来指定可接收范围的最大值。
注意:指定日期范围的时候,需要使用统一的格式,比如用MM/DD/YYYY的格式等。
date验证器既可以用于字段验证器,又可以用于动作验证器。
10.4.6双精度浮点验证器(double)
double验证器用来验证一个双精度浮点型参数是否在指定的范围内。如果一个已经被成功转换为double的属性不在验证器指定的范围内,double验证器就会报错。
double验证器可以有四个参数:
- minInclusive用来指定可接受范围的最小值,包含给定值。
- maxInclusive用来指定可接收范围的最大值,包含给定值。
- minExclusive用来指定可接受范围的最小值,不包含给定值。
- maxExclusive用来指定可接收范围的最大值,不包含给定值。
double验证器既可以用于字段验证器,又可以用于动作验证器。
10.4.7邮件验证器(email)
email验证器用来验证一个参数是否为邮箱地址。
email验证器既可以用于字段验证器,又可以用于动作验证器。
10.4.8 URL验证器(url)
url验证器用来验证一个参数是否为合法的URL。
url验证器既可以用于字段验证器,又可以用于动作验证器。
10.4.9必填验证器(required)
required验证器用来验证一个参数是否不为null。
required验证器既可以用于字段验证器,又可以用于动作验证器。
10.4.10必填字符串验证器(requiredstring)
requiredstring验证器用来验证一个字符串参数是否非空,既不为null,且长度大于0。
requiredstring验证器只有一个参数:
- trim:是否去掉字符串两边的空白,默认为true。
requiredstring验证器既可以用于字段验证器,又可以用于动作验证器。
10.4.11字符串长度验证器(stringlength)
stringlength验证器用来验证一个字符串的长度是否在指定范围内。
stringlength验证器有三个参数:
- maxLength:字符串长度的最大值。
- minLength:字符串长度的最小值。
- trim:是否去掉字符串两边的空白,默认为true。
stringlength验证器既可以用于字段验证器,又可以用于动作验证器。
10.4.12正则表达式验证器(regex)
regex验证器用来验证一个字符串是否符合一个正则表达式的要求。
regex验证器有三个参数:
- expression:必填参数,正则表达式。
- caseSensitive:是否检查大小写。
- trim:是否去掉字符串两边的空白,默认为true。
regex验证器既可以用于字段验证器,又可以用于动作验证器。
10.4.13字段表达式验证器(fieldexpression)和表达式验证器(expression)
fieldexpression验证器中必须指定一个返回布尔值的ognl表达式,根据这个表达式的值来确定是否符合条件。
fieldexpression验证器只有一个参数:
- expression:返回布尔值的ognl表达式,可以在这个ognl表达式中访问当前的值栈。
regex验证器既可以用于字段验证器,又可以用于动作验证器。
表达式验证器(expression)与字段表达式验证器(fieldexpression)类似,同样使用expression参数来指定返回布尔值的ognl表达式,但是,只能用于动作验证器。
10.4.14访问者验证器(visitor)
visitor验证器用于验证Action中的复合属性,可以直接把验证信息放到域对象中去注册,这样就使得同包内的不同Action在验证同一个域对象时,不用注册重复的验证信息。
vistior验证器有两个属性:
- context:引用的域对象验证信息文件上下文名。
- appendPrefix:是否在错误信息中添加<message>元素指定的前缀。
来示例一下,仍然要检查user.age大于等于18岁。保持Action不变,修改一下原来的验证信息文件,示例如下:
上面的示例,在user字段上指定了一个visitor验证器,设置上下文的名称为c1,设置前缀为true,也就是说在发生错误的时候,要在c1上下文返回的错误信息前加上“用户”这个前缀。
接下来新添一个上下文验证文件,其文件名为“字段的简单类名-上下文名-validation.xml”,比如现在要为user属性指定一个名为c1的上下文,所以文件名为UserModel-c1-validation.xml,放在与域对象同级的包内,即UserModel所在的包内,注意:不再是与Action同级的包内了,其内容示例为:
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE validators PUBLIC
- "-//OpenSymphony Group//XWork Validator 1.0//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
- <validators>
- <field name="age">
- <field-validator type="int">
- <param name="min">18</param>
- <message>年龄要大于等于18</message>
- </field-validator>
- </field>
- </validators>
它的本质也是一个验证文件,与之前直接在RegisterAction-validation.xml直接写出对user.age的验证相比,没有本质上的区别,只是这个文件以UserModel类为验证的根,所以<field>元素的name属性直接写age就可以了,而不再是原来的user.age。至于使用验证器的方式和配置都不变,就不去赘述了。
私塾在线网站原创《研磨struts2》系列
转自请注明出处:【http://sishuok.com/forum/blogPost/list/0/4093.html】
欢迎访问http://sishuok.com获取更多内容
发表评论
-
研磨struts2 目录贴
2012-08-24 12:12 163531.1 《研磨struts2》 第一章 Struts2 ... -
跟着cc学设计 之 研磨设计模式 视频教程 出炉了
2012-08-15 07:16 2研磨设计模式——跟着CC学设计系列精品课程,上线了! ... -
研磨struts2 目录
2012-07-30 21:15 2471.1 《研磨struts2》 第一章 Strut ... -
研磨struts2 目录
2012-07-30 16:54 361.1 《研磨struts2》 第一章 Stru ... -
《研磨struts2》A.2 struts.properties的配置 之 A.2.1 概述
2012-07-09 12:10 3072A.2.1 概述 如果我们希望覆盖在 ... -
《研磨struts2》附录A Struts2的配置 之 A.1 struts.xml的配置
2012-07-09 12:10 2719A.1 struts.xml的配置 A.1.1 ... -
《研磨struts2》第二十一章 零配置 之 21.3 通过注解来实现零配置
2012-07-06 08:07 293021.3 通过注解来实现零配置 21.3.1 ... -
《研磨struts2》第二十一章 零配置 之 21.2 约定大于配置
2012-07-05 10:44 247521.2 约定大于配置 21.2.1 约定 ... -
《研磨struts2》第二十一章 零配置 之 21.1 概述
2012-07-05 10:44 232621.1 概述 21.1.1 零配置概述 在 ... -
《研磨struts2》第二十章 整合SiteMesh 之 20.3 整合Struts2与SiteMesh
2012-07-04 08:15 2090在Struts2中使用SiteMesh ... -
《研磨struts2》第二十章 整合SiteMesh 之 20.2 单独使用SiteMesh
2012-07-03 08:00 210520.2 单独使用SiteMesh 20. ... -
《研磨struts2》第二十章 整合SiteMesh 之 20.1 调整应用的风格
2012-07-03 07:59 187020.1 调整应用的风 ... -
《研磨struts2》19.2 使用execAndWait拦截器模拟进度条 之 19.2.1 模拟长时间运行的Action
2012-07-02 12:24 215019.2.1模拟长时间运行的Action ... -
《研磨struts2》第十九章 进度条 之 19.1 使用“进度条”告知用户进度
2012-07-02 12:23 215219.1 使用“进度条”告知用户进度 ... -
《研磨struts2》第十八章 结合JFreeChart 之 18.3 Struts2结合JFreeChart
2012-06-28 12:12 201518.3 Struts2结合JFreeChart ... -
《研磨struts2》第十八章 结合JFreeChart 之 18.2 Struts2插件概述
2012-06-28 12:11 2031Struts2并没有求大求全,企图把所有 ... -
《研磨struts2》第十八章 结合JFreeChart 之 18.1 JFreeChart使用
2012-06-20 15:48 229618.1 JFreeChart使用 18.1.1概 ... -
研磨struts2(1-10章)电子书下载
2012-06-19 07:30 6078研磨struts2的博客文章 私塾在线学习网 《研 ... -
《研磨struts2》第十七章 防止重复提交 之 17.3 更强大的tokenSession拦截器
2012-06-18 13:46 208217.3 更强大的tokenSession拦截器 ... -
《研磨struts2》第十七章 防止重复提交 之 17.2 使用标签
2012-06-18 13:45 234017.2 使用<s:token/>标签 ...
相关推荐
2. **拦截器(Interceptors)**:Struts2的核心之一是其拦截器机制,它们在Action执行前后执行一系列预定义或自定义的操作。这些拦截器可以用于登录验证、日志记录、性能监控等。源代码中可能包含了不同类型的拦截器...
### 知识点一:Struts2入门(MVC HelloWorld) #### 1.1 Struts2简介 ...以上就是关于“研磨Struts2”的主要知识点梳理,通过深入学习这些内容,开发者可以更好地掌握Struts2框架的核心技术和实践技巧。
由于文件较大,我把这个文档切割为2部分,这是第一部分,请下载完第一部分后一定要下载第二部分,否则不能阅读。
为了更好地理解和概括这份资料所涉及的知识点,我们先来了解一下Struts 2框架及其重要性,然后深入探讨《研磨Struts 2》这本书的主要内容。 ### Struts 2框架简介 Struts 2是Apache Struts的一个版本,它是用于...
《研磨Struts2》这本书是专门针对Struts2框架的学习指南,通过深入浅出的方式讲解了Struts2的核心概念和技术。其配套的PPT和视频旨在帮助读者更直观地理解书中的理论知识,并将其付诸实践。 在研读《研磨Struts2》...
2. **FilterDispatcher**:这是 Struts2 的核心组件之一,所有的请求都会经过此过滤器。它负责初始化 Struts2 的环境,并调用相应的 Action 处理器。 3. **ActionMapper**:根据请求的 URL 确定哪个 Action 类负责...
从给定的文件信息来看,这是一份关于Struts2框架深入解析的系列文章,涵盖了Struts2的基础、架构、核心组件、高级特性等多个方面,旨在帮助读者全面掌握Struts2框架的应用与实践。以下是对该系列文章所涵盖的关键...
研磨Struts2 高清完整版,请和第一部分一起下载啊
Struts2是一个强大的Java web应用程序框架,用于构建...通过《研磨Struts2》,读者可以系统地学习Struts2框架的各个方面,从而熟练掌握这个强大的Web开发工具,提高开发效率,构建出结构清晰、易于维护的Java Web应用。
研磨Struts2_12859679_高清完整版
研磨Struts2-高清-完整目录-2011年10月,分享给所有需要的人
Java工程师三大框架面试题.pdf
【第十章多功能敏感陶瓷】 多功能敏感陶瓷是一种集多种传感功能于一体的新型材料,旨在满足现代科技发展和实际应用的需求。从20世纪80年代初开始,国内外科研人员开始研究这类陶瓷,以期将不同功能的传感器集成在一...
在这样的背景下,作为光纤连接器中至关重要的组成部分——陶瓷插芯,其研磨加工技术的不断革新,成为了科技工作者研究的重要方向。 陶瓷插芯作为一种特殊材料组件,主要由纳米氧化锆加工而成,它具备高强度与高脆性...
本电子书一共两个压缩文档,本文件为part2. 《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。初级内容从基本讲起,包括每个模式的定义、功能、思路、结构、基本实现、运行调用顺序、基本应用示例等,...
研磨设计模式.part2 一定要下载5部分