`
iehyou
  • 浏览: 132953 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

struts2 内建效验器

    博客分类:
  • J2EE
阅读更多
http://struts.apache.org/2.0.9/docs/validation.html这个是官网效验部分的doc。
struts验证分为2种:Field Validators 和Non Field Validators
首先是验证器的执行先后:
Non Field Validators优先Field Validators,
Non Field Validators排在前面的先执行
Field Validators排在后面的先执行
短路原则:
Non Field Validators最优先执行,如果某个字段效验失败,则改字段下的所有效验不会获得执行机会,不会影响其他字段的执行,Field Validators一样操作。
Non Field Validators不会影响Field Validators的执行。


这里使用都是Non Field Validators的效验,在学习的时候记录下,设置2个相同的Field Validators或Non Field Validators,只会执行一个。

1.必填效验器:
可接收参数:fieldName
对于输入框不能用这个,应该使用requiredstring,我想应该输入框默认传入的是字符长度为0的"",对于required而言,是不为空的。所以过滤是无效的。这样的话,可以用在上传文件的时候判断是否上传了文件
<validator type="required">
		<param name="fieldName">pic</param>
		<message>${getText('login.pic.required')}</message>
	</validator>

本来我是想将pic1和pic2一起使用required做效验 但是发现后面的age会覆盖username,貌似只能对一个参数做效验,后来按惯性思维,放在同一个param下,结果没有过滤该字段。
<param name="fieldName">pic,pic2</param>


2.必填字符串效验器:
可接收参数:fieldName ,trim
要求字段值必须非空且长度大于0
<field name="user.username">
		<field-validator type="requiredstring">
			<message>${getText('login.username.required')}</message>
		</field-validator>
	</field>


3.int,double效验器:
可接收参数:fieldName ,min,max
必须在int型范围
<validator type="int">
		<param name="fieldName">user.age</param>
		<param name="min">18</param>
		<param name="max">150</param>
		<message>${getText('login.age.valid')}</message>
	</validator>
国际化:login.age.valid=年龄必须在${min}-${max}之间

如果接收的是非数字,页面上就会输出2条错误信息,不清楚在那里设置短路。

4.date效验器:
<validator type="date">
<param name="fieldName">user.birth</param>
<param name="min">1990-01-01</param>
<param name="max">2100-01-01</param>
<message>${getText('login.date.valid')}</message>
</validator>

5.expression效验器:
可接收参数:expression

求出ognl表达式的值。为true通过验证

分享到:
评论
1 楼 Wuaner 2010-10-15  
引用
Non Field Validators排在前面的先执行 
Field Validators排在后面的先执行


“Non Field Validators排在前面的先执行”是对的。但是对于“Field Validators排在后面的先执行”,看下面的例子:
http://struts.apache.org/2.x/docs/validation.html#Validation-ShortCircuitingValidator
引用

<!DOCTYPE validators PUBLIC
        "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
        "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
  <!-- Field Validators for email field -->
  <field name="email">
      <field-validator type="required" short-circuit="true">
          <message>You must enter a value for email.</message>
      </field-validator>
      <field-validator type="email" short-circuit="true">
          <message>Not a valid e-mail.</message>
      </field-validator>
  </field>
  <!-- Field Validators for email2 field -->
  <field name="email2">
     <field-validator type="required">
          <message>You must enter a value for email2.</message>
      </field-validator>
     <field-validator type="email">
          <message>Not a valid e-mail2.</message>
      </field-validator>
  </field>
  <!-- Plain Validator 1 -->
  <validator type="expression">
      <param name="expression">email.equals(email2)</param>
      <message>Email not the same as email2</message>
  </validator>
  <!-- Plain Validator 2 -->
  <validator type="expression" short-circuit="true">
      <param name="expression">email.startsWith('mark')</param>
      <message>Email does not start with mark</message>
  </validator>
</validators>

In the example above, the actual execution of validator would be as follows:
Plain Validator 1
Plain Validator 2
Field Validators for email field
Field Validators for email2 field



证明对于Field Validators,也是排在前民的先执行的。楼主同意吗?

相关推荐

    Struts2的输入校验

    Struts2输入校验,Struts2提供了功能强大的输入校验机制,通过Struts2内建的输入校验器,应用无需书写任何代码,即可完成大部分的校验功能,并可以同时完成客户端和服务器端的校验。

    struts2输入校验

    自己做的struts2输入校验,很详细的

    Struts2类型转换与输入校验 .zip

     熟悉和掌握Struts2内建校验的操作方法  实验环境与设备:  已经接入局域网的网络实验室,机器上装有IE浏览器等;  strtus2.5.8  实验内容: (1) 编写一个自定义类型转换器,并基于应用程序进行全局...

    Struts2输入校验

    要求使用Struts2的内建校验器校验“书名”、“作者”、“出版日期”、“价格”和“库存数量”字段;要求手动编写代码校验“书号”的有效性;要求手动编写代码校验“出版社”字段中是否包含了“出版社”三个字。

    JSP 开发之Struts2内建自定义拦截器

    JSP 开发之Struts2内建自定义拦截器 Struts2的自定义拦截器主要用于解析请求参数,将请求参数赋值给Action属性,执行数据校验,文件上传等等操作。当需要扩展Struts2的功能时,我们只需要提供相应的拦截器并将它配置...

    低清版 大型门户网站是这样炼成的.pdf

    2.6.1 struts 2内建拦截器介绍 95 2.6.2 定义和使用拦截器栈 97 2.6.3 使用自定义拦截器 98 2.7 小结 100 第3章 struts 2标签库详解与ajax技术应用 103 3.1 struts 2主题与模板 103 3.2 struts 2控制标签详解 ...

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    3.3.2 JSF内建转换器 144 3.3.3 使用转换器 145 3.3.4 转换失败后的错误消息 149 3.4 自定义转换器 154 3.4.1 实现转换器类 154 3.4.2 注册转换器 156 3.4.3 使用自定义转换器 159 3.4.4 绑定到Bean属性的转换器 159...

    spring chm文档

    5.4.2. 内建的PropertyEditor实现 6. 使用Spring进行面向切面编程(AOP) 6.1. 简介 6.1.1. AOP概念 6.1.2. Spring AOP的功能和目标 6.1.3. Spring的AOP代理 6.2. @AspectJ支持 6.2.1. 启用@AspectJ支持 ...

    Spring 2.0 开发参考手册

    5.4.2. 内建的PropertyEditor实现 6. 使用Spring进行面向切面编程(AOP) 6.1. 简介 6.1.1. AOP概念 6.1.2. Spring AOP的功能和目标 6.1.3. Spring的AOP代理 6.2. @AspectJ支持 6.2.1. 启用@AspectJ支持 ...

    Spring API

    5.4.2. 内建的PropertyEditor实现 6. 使用Spring进行面向切面编程(AOP) 6.1. 简介 6.1.1. AOP概念 6.1.2. Spring AOP的功能和目标 6.1.3. AOP代理 6.2. @AspectJ支持 6.2.1. 启用@AspectJ支持 6.2.2. 声明...

    Spring中文帮助文档

    5.4.2. 内建的PropertyEditor实现 6. 使用Spring进行面向切面编程(AOP) 6.1. 简介 6.1.1. AOP概念 6.1.2. Spring AOP的功能和目标 6.1.3. AOP代理 6.2. @AspectJ支持 6.2.1. 启用@AspectJ支持 6.2.2. 声明...

    Spring-Reference_zh_CN(Spring中文参考手册)

    5.4.2. 内建的PropertyEditor实现 5.4.2.1. 注册用户自定义的PropertyEditor 6. 使用Spring进行面向切面编程(AOP) 6.1. 简介 6.1.1. AOP概念 6.1.2. Spring AOP的功能和目标 6.1.3. Spring的AOP代理 6.2. @AspectJ...

Global site tag (gtag.js) - Google Analytics