`

《研磨struts2》第十章 验证框架 之 10.3 验证器类型

 
阅读更多

10.3  验证器类型

可以把验证器类型分为两种:字段验证器和动作验证器。其中,字段验证器就像前面演示的那样,只验证提交的表单内的单个字段;而动作验证器一般验证提交的表单内的多个字段的关系,比如,录入产品信息的时候,产品的进价不能高于售价。

无论是哪种验证器,都需要考虑以下几个问题:

  • 验证谁?
  • 使用什么条件验证?
  • 不满足条件显示什么结果?
  • 不满足验证条件时显示的结果出现在页面的什么位置?

10.3.1字段验证器

字段验证器用来验证提交的表单内的单个字段,如同前面的示例,在验证文件里:

 

java代码:
  1. <validators>  
  2.     <field name="user.age">  
  3.         <field-validator type="int">  
  4.             <param name="min">18</param>  
  5.             <message>年龄必须在18岁以上,您输入的是${user.age}</message>  
  6.         </field-validator>  
  7.     </field>  
  8. </validators>  
  • <validators>元素作为整个验证文件的根元素。
  • <validators>元素的<field>子元素就是字段验证器,<field>元素的name属性就是这个字段验证器要验证的哪个字段。
  • 一个<field>元素可以有多个<field-validator>元素。
  • 每一个<field-validator>元素是对这个字段的一种验证条件,它的type属性就是具体的验证器,在这里引用了内置的int验证器。
  • 还可以给<field-validator>元素添加<param>子元素来设置验证条件的参数,添加<message>子元素来设置验证错误时返回的信息。在<message>元素中写出的文本将直接作为错误信息返回,如果<message>元素存在key属性,它将引用国际化信息。

除了以上的这种写法,还有另外一种注册的方式,虽然写出来的xml配置不同,但是所需要的参数,以及运行时所起的作用都和以上的写法一模一样:

 

java代码:
  1. <validators>  
  2. <validator type="int">  
  3.         <param name="fieldName">user.age</param>  
  4.         <param name="min">18</param>  
  5.         <message>年龄必须在18岁以上,您输入的是${user.age}</message>  
  6.     </validator>  
  7. </validators>  
  • <validators>元素仍然作为整个验证文件的根元素。
  • <validators>元素的<validator>子元素就是字段验证器,<validator>元素的type属性就是这个字段验证器要使用的验证器。
  • <validator>元素作为字段验证器使用时,一定要出现一个name属性为fieldName的<param>子元素,用以指明验证哪个字段。
  • <validator>元素的<message>子元素用来设置验证错误时返回的信息。在<message>元素中写出的文本将直接作为错误信息返回,如果<message>元素存在key属性,它将引用国际化信息。

无论是哪种写法,如果不满足验证的条件,它将显示在对应的文本框的上边。

10.3.2动作验证器

与字段验证器只验证单个字段相比,动作验证器应用于整个动作(Action),一般用于验证提交的表单内的多个字段的关系,当然也可以验证单个字段。

为了示例,假定要求输入的帐号也为数字,并要求输入的age值要大于帐号的值。那么在验证文件里,可以按照如下写法,示例代码如下:

 

java代码:
  1. <validator type="expression">  
  2.     <param name="expression"><![CDATA[user.age>=user.account]]></param>  
  3.     <message>年龄必须在${user.account}岁以上,您输入的是${user.age}</message>  
  4. </validator>  
  • <validators>元素作为整个验证文件的根元素。
  • <validators>元素的< validator>子元素就是动作验证器。其type属性为expression,引用了内置的表达式验证器,这个验证器需要一个name属性为expression的<param>子元素为其指定表达式。
  • <validator>元素的<message>子元素用来设置验证错误时返回的信息。在<message>元素中写出的文本将直接作为错误信息返回,如果<message>元素存在key属性,它将引用国际化信息。

注意:上面出现的<![CDATA[]]>是xml的通用语法,里面的内容不需要对特殊字符进行转义。

对于动作验证器,它返回的错误信息并不会直接显示在<s:textfield name=”user.age”/>对应的文本框上方,需要使用<s:actionerror/>标签去引用。如:

 

java代码:
  1. 用户注册  
  2. <hr>  
  3. <s:actionerror/>  
  4. <hr>  
  5. <s:form action="/registerAction.action">  
  6.     <s:textfield name="user.account" label="账号"/>  
  7.     <s:textfield name="user.name" label="姓名"/>  
  8.     <s:textfield name="user.age" label="年龄"/>  
  9.     <s:submit value="注册"/>  
  10. </s:form>  

这样,如果动作验证器条件不满足的话,错误信息会出现在<s:actionerror/>的位置上。

图10.5 使用动作验证器

 

私塾在线网站原创《研磨struts2》系列

转自请注明出处:【http://sishuok.com/forum/blogPost/list/0/4092.html

欢迎访问http://sishuok.com获取更多内容

9
7
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics