10.3 验证器类型
可以把验证器类型分为两种:字段验证器和动作验证器。其中,字段验证器就像前面演示的那样,只验证提交的表单内的单个字段;而动作验证器一般验证提交的表单内的多个字段的关系,比如,录入产品信息的时候,产品的进价不能高于售价。
无论是哪种验证器,都需要考虑以下几个问题:
- 验证谁?
- 使用什么条件验证?
- 不满足条件显示什么结果?
- 不满足验证条件时显示的结果出现在页面的什么位置?
10.3.1字段验证器
字段验证器用来验证提交的表单内的单个字段,如同前面的示例,在验证文件里:
java代码:
- <validators>
- <field name="user.age">
- <field-validator type="int">
- <param name="min">18</param>
- <message>年龄必须在18岁以上,您输入的是${user.age}</message>
- </field-validator>
- </field>
- </validators>
- <validators>元素作为整个验证文件的根元素。
- <validators>元素的<field>子元素就是字段验证器,<field>元素的name属性就是这个字段验证器要验证的哪个字段。
- 一个<field>元素可以有多个<field-validator>元素。
- 每一个<field-validator>元素是对这个字段的一种验证条件,它的type属性就是具体的验证器,在这里引用了内置的int验证器。
- 还可以给<field-validator>元素添加<param>子元素来设置验证条件的参数,添加<message>子元素来设置验证错误时返回的信息。在<message>元素中写出的文本将直接作为错误信息返回,如果<message>元素存在key属性,它将引用国际化信息。
除了以上的这种写法,还有另外一种注册的方式,虽然写出来的xml配置不同,但是所需要的参数,以及运行时所起的作用都和以上的写法一模一样:
java代码:
- <validators>
- <validator type="int">
- <param name="fieldName">user.age</param>
- <param name="min">18</param>
- <message>年龄必须在18岁以上,您输入的是${user.age}</message>
- </validator>
- </validators>
- <validators>元素仍然作为整个验证文件的根元素。
- <validators>元素的<validator>子元素就是字段验证器,<validator>元素的type属性就是这个字段验证器要使用的验证器。
- <validator>元素作为字段验证器使用时,一定要出现一个name属性为fieldName的<param>子元素,用以指明验证哪个字段。
- <validator>元素的<message>子元素用来设置验证错误时返回的信息。在<message>元素中写出的文本将直接作为错误信息返回,如果<message>元素存在key属性,它将引用国际化信息。
无论是哪种写法,如果不满足验证的条件,它将显示在对应的文本框的上边。
10.3.2动作验证器
与字段验证器只验证单个字段相比,动作验证器应用于整个动作(Action),一般用于验证提交的表单内的多个字段的关系,当然也可以验证单个字段。
为了示例,假定要求输入的帐号也为数字,并要求输入的age值要大于帐号的值。那么在验证文件里,可以按照如下写法,示例代码如下:
java代码:
- <validator type="expression">
- <param name="expression"><![CDATA[user.age>=user.account]]></param>
- <message>年龄必须在${user.account}岁以上,您输入的是${user.age}</message>
- </validator>
- <validators>元素作为整个验证文件的根元素。
- <validators>元素的< validator>子元素就是动作验证器。其type属性为expression,引用了内置的表达式验证器,这个验证器需要一个name属性为expression的<param>子元素为其指定表达式。
- <validator>元素的<message>子元素用来设置验证错误时返回的信息。在<message>元素中写出的文本将直接作为错误信息返回,如果<message>元素存在key属性,它将引用国际化信息。
注意:上面出现的<![CDATA[]]>是xml的通用语法,里面的内容不需要对特殊字符进行转义。
对于动作验证器,它返回的错误信息并不会直接显示在<s:textfield name=”user.age”/>对应的文本框上方,需要使用<s:actionerror/>标签去引用。如:
java代码:
- 用户注册
- <hr>
- <s:actionerror/>
- <hr>
- <s:form action="/registerAction.action">
- <s:textfield name="user.account" label="账号"/>
- <s:textfield name="user.name" label="姓名"/>
- <s:textfield name="user.age" label="年龄"/>
- <s:submit value="注册"/>
- </s:form>
这样,如果动作验证器条件不满足的话,错误信息会出现在<s:actionerror/>的位置上。
图10.5 使用动作验证器
私塾在线网站原创《研磨struts2》系列
转自请注明出处:【http://sishuok.com/forum/blogPost/list/0/4092.html】
欢迎访问http://sishuok.com获取更多内容
分享到:
相关推荐
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年代初开始,国内外科研人员开始研究这类陶瓷,以期将不同功能的传感器集成在一...
例如,NH4Cl与KCl可通过观察外观区别,而(NH4)2SO4与K2SO4可通过加熟石灰研磨后闻气味来区分。 11. 鉴别化肥的实用方法:如(NH4)2SO4与KCl可通过加熟石灰粉末研磨后闻气味,前者会产生氨气,后者无明显气味。 12. ...
本电子书一共两个压缩文档,本文件为part2. 《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。初级内容从基本讲起,包括每个模式的定义、功能、思路、结构、基本实现、运行调用顺序、基本应用示例等,...
研磨设计模式.part2 一定要下载5部分