`
iehyou
  • 浏览: 135520 次
  • 性别: 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的内建校验器主要位于`xwork-2.0.4.jar`压缩包中的`default.xml`文件里。这个...

    Struts2的输入校验

    Struts2是一个流行的Java web框架...不仅如此,Struts2的灵活性还允许开发者扩展和定制自己的校验器,以满足不同项目的需求。总的来说,Struts2的输入校验机制为开发高效、健壮的Java web应用程序提供了强有力的支持。

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

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

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

    本文将深入探讨Struts2的内建自定义拦截器及其配置。 首先,让我们理解什么是拦截器。拦截器是基于AOP(面向切面编程)思想的,它们在Action调用前后执行,形成一个拦截器链。每个拦截器都可以执行特定的任务,并且...

    Struts2输入校验

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

    Struts2--输入校验

    Struts2内建了一个基于XML的校验框架,允许开发者在Action类的配置文件中定义验证规则。这些规则可以指定字段的必填性、长度限制、数据类型等。例如,你可以通过以下方式定义一个用户名的非空校验规则: ```xml ...

    struts2核心技术整理

    Struts2内建对Ajax的支持,可以通过`&lt;s:a&gt;`标签的`ajax="true"`属性或者`@Ajax`注解实现无刷新更新,提高用户体验。 总结,Struts2作为Java web开发的主流框架之一,其核心技术包括Action、Interceptor、Value ...

    Struts2深入理解

    - **Struts2内建的拦截器:** - **exception:** 处理异常。 - **fileUpload:** 文件上传。 - **prepare:** 在调用Action方法之前准备数据。 - **params:** 设置Action中的参数。 **2. 拦截器的组合与使用:...

    Struts2学习文档

    **6.5 内建校验器** - **6.5.1 required必填校验器** - **实现方式**:检查某个字段是否为空。 - **6.5.2 requiredstring必填字符串校验器** - **实现方式**:检查某个字符串字段是否为空。 - **6.5.3 int整数...

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

    在JSP开发中,理解并熟练使用Struts2的内建自定义拦截器对于优化应用性能和增强功能至关重要。 自定义拦截器主要应用于以下场景: 1. 参数解析:拦截器可以解析请求参数并将其赋值给Action的属性。 2. 数据校验:在...

    struts2拦截器

    #### 五、Struts2内建拦截器 Struts2提供了许多内建的拦截器,它们覆盖了常见的功能需求,例如: - **模型驱动(ModelDriven)**:初始化模型实例。 - **参数(Params)**:处理请求参数。 - **令牌(Token)**:...

    struts2教程我在培训时用的

    - **内建拦截器**:Struts2提供了一系列预定义的拦截器,如参数填充拦截器、异常处理拦截器等。 - **自定义拦截器**:开发者可以自定义拦截器,实现特定的功能。 - **自定义方法过滤拦截器**:根据Action的方法名来...

    struts-2.3.16.1-all

    7. **Validation框架**:Struts 2内建了强大的验证框架,可以通过XML或注解方式定义验证规则,实现数据的前端和后端双重校验。 8. **插件系统**:Struts 2拥有丰富的插件库,如JSON插件、REST插件、Freemarker插件...

    struts2 文件上传源码

    `FileUploadInterceptor`是Struts2内建的拦截器,用于解析请求中的文件数据。 4. **Commons FileUpload库**:Struts2默认使用Apache Commons FileUpload库来处理文件上传。这个库负责读取HTTP请求中的多部分数据,...

    struts2验证框架

    #### 四、Struts2内建验证程序 Struts2提供了一系列预定义的验证器类型,开发者可以根据实际需求选择合适的类型进行验证。 - **required**:验证字段值是否为空(null),注意空字符串并不视为null。 ```xml ...

    在struts2里,完成登录页面,使用validate对输入数据进行校验,用户名必填,密码必填且长度大于6

    Struts2提供了一种内建的数据校验机制,即在Action类中定义validate()方法。这个方法会在调用`execute()`之前自动执行,用于验证用户提交的表单数据。我们可以在`validate()`方法中添加如下代码: ```java ...

    struts2_jar.zip

    拦截器是Struts2的一大特色,它们在Action执行前后按顺序调用,可以实现如登录检查、数据校验、日志记录等功能。开发者可以根据需求编写自己的拦截器并将其加入到拦截器链中。 在实际项目中,Struts2通常与Spring、...

    J2EE企业级项目开发-1期 任务1-3 实训项目单.doc

    4. **内建校验器**:内建校验器是Struts2提供的一种便捷方式,用于快速实现常见数据校验逻辑。学生需要学习如何创建和使用内建校验器,这样可以减少重复代码,提高代码复用性。 5. **实现步骤**: - 首先,理解...

    J2EE企业级项目开发-3期(KC007) 8.2 Struts之数据校验与国际化考试.doc

    而在Struts2中,可以使用拦截器(Interceptor)配合Validation.xml或注解进行数据校验。这样,当用户提交表单时,框架会自动进行校验,如果数据不合法,会返回错误消息并显示在页面上,防止无效数据进入数据库。 2....

Global site tag (gtag.js) - Google Analytics