- 浏览: 26617 次
- 性别:
- 来自: 厦门
最新评论
除了Form Bean中的validate()方法,Struts还提供Validator插件进行数据校验,Validator插件能在Jsp页面里面生成JavaScript脚本,利用定制的JavaScript脚本在客户端浏览器进行数据校验。
1.支持自动校验 的ValidatorForm
支持Validator校验的Form Bean必须继承Struts的ValidatorForm。本例使用Validator校验Form Bean的非空字符串、整型变量以及电子邮件。
代码1:ValidateTestForm.java
package com.strust1.test.actionFrom; import org.apache.struts.validator.ValidatorForm; public class ValidatorTestForm extends ValidatorForm { private int age; private String name; private String email; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }
2.Validate规则配置
Validator插件使用配置式数据校验,所有的校验规则都配置在XML文件中。基本上所有的常用校验都能通过配置实现。
代码2:validation.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.3.0//EN" "http://jakarta.apache.org/commons/dtds/validator_1_3_0.dtd"> <form-validation> <formset> <form name="validatorTestForm"> <field property="name" depends="required"><!--名字非空--> <msg name="required" key="validatorTest.error.nameRequired"/> </field> <field property="age" depends="required, integer, intRange"> <arg position="0" name="intRange" key="${var:min}" resource="false"/> <arg position="1" name="intRange" key="${var:max}" resource="false"/> <var> <var-name>min</var-name> <var-value>0</var-value> </var> <var> <var-name>max</var-name> <var-value>100</var-value> </var> <msg name="required" key="validatorTest.error.ageRequired"/> <msg name="integer" key="validatorTest.error.ageinteger"/> <msg name="intRange" key="validatorTest.error.ageintRange"/> </field> <field property="email" depends="required, email"> <msg name="email" key="validatorTest.error.emailformat"/> <msg name="required" key="validatortest.error.emailrequired"/> </field> </form> </formset> </form-validation>
被校验的Form表单名称为validateTestForm。配置校验了3个域:name、age、email。其中name的校验规则为requried(表示该输入是必需的)。age的校验规则为required、integer(表示该输入必须为整型)、range(表示该输入值在特定的区间内),email的校验规则为required、email(表示该输入必须符合电子邮件格式)
提示:Struts1.x提供配置式数据验证,并预先封装好了常用的数据校验器,例如字符串、数字、电子邮件等,也可以自定义数据校验器。
3、错误信息配置
如果检验失败,会显示<msg>配置的错误信息。错误信息配置在Struts的资源文件中,key为资源的索引。资源文件内容如下:
validatorTest.error.nameRequired=\u540D\u5B57\u5FC5\u586B validatortest.error.emailrequired=email\u5FC5\u987B\u586B\u5199 validatorTest.error.ageRequired=\u5E74\u9F84\u5FC5\u586B validatorTest.error.ageinteger=\u5E74\u9F84\u5FC5\u987B\u662F\u6574\u6570 validatorTest.error.ageintRange=\u5E74\u9F84\u5FC5\u987B\u57280\u5230100\u4E4B\u95F4 validatorTest.error.emailformat=email\u683C\u5F0F\u4E0D\u6B63\u786E
这是编码过的。
4.配置到Struts-config.xml中
校验规则配置完成后,还需要连同校验规则库(也就是validator-rules.xml文件,定义了常用的校验实现代码,位于/WEB-INF下)配置到struts-config.xml中,配置为plugin的形式,代码如下
代码3:struts-config.xml
<?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd"> <struts-config> <form-beans> <form-bean name="validatorTestForm" type="com.strust1.test.actionFrom.ValidatorTestForm"> </form-bean> </form-beans> <action-mappings> <action path="/validatorTest" type="com.strust1.test.action.ValidatorAction" name="validatorTestForm" > </action> </action-mappings> <message-resources parameter="com.strust1.test.ApplicationResources"></message-resources> <plug-in className="org.apache.struts.validator.ValidatorPlugIn"> <set-property property="pathnames" value="/WEB-INF/validator-rules.xml, /WEB-INF/validation.xml"/> <set-property property="stopOnFirstError" value="false"/> </plug-in> </struts-config>
第一个参数pathnames为校验规则库文件、校验规则配置文件的路劲。第二个参数为如果前面校验失败是否停止后面的校验。
5.配置客户端JavaScript校验
配置完后,就可以在jsp中引用校验了,jsp中必须使用<html:javaScript/>标签。Struts会在该标签处生成JavaScript校验代码,例如:
代码5:validaeTest.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'validateTest.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <html:form action="/validatorTest" onsubmit="return validateValidatorTestForm(this)"> 姓名:<html:text property="name"></html:text><html:errors property="name"/><br/> 年龄:<html:text property="age"></html:text><html:errors property="age"/> 电子邮件:<html:text property="email"></html:text><html:errors property="email"/> <html:submit value="提交"></html:submit> <html:javascript formName="validatorTestForm"/> </html:form> </body> </html>
<html:javaScript>标签的formName与validation.xml中配置的form的name属性遥相呼应。Jsp表单也要使用onsubmit事件。注意代码consubmit="return validateValidatorTestForm(this);"中函数的名称也要用到了form name。
发表评论
-
struts1.x和2.x的线程安全
2012-02-15 15:18 890线程安全是每个多线程 ... -
Struts2和1的异同点
2012-02-06 16:06 730不同点: FormBean被Action属性取代 Acti ... -
Struts1和Struts2的区别
2012-02-06 11:04 1308在Web.xml中配置分发器。Struts1使用ActionS ... -
struts1.2上传文件
2012-02-02 15:29 1006struts提供了<html:file>标签,集成 ... -
getGeneratedKeys()使用情况
2011-12-31 16:31 2084getGeneratedKeys()只能在sqlserver或 ... -
struts1需要注意的一些问题
2011-12-30 16:42 9551.struts的控制器:org.apache.strut ... -
struts 使用POJO应注意的一点
2011-12-28 13:40 900对于提交数据比较多的表单,为了避免大量地在FormBean里面 ... -
Struts页面时间格式
2011-12-28 10:20 1168当jsp页面有时间项的时候,除了传递正确格式的时间项外,即传递 ... -
Struts的国际资源配置
2011-12-26 20:28 618概述 类MessageResources可以使开发者方便地支 ... -
ActionResources_zh_CN.properties Not Found.
2011-12-26 20:26 827控制台报警告:2009-06-30 16:08:02,76 ...
相关推荐
1. **表单验证**: BootstrapValidator允许开发者定义一系列的验证规则,如非空、邮箱格式、电话号码等,以确保用户输入的数据符合预设标准。例如,`xm`字段可能需要验证非空(notEmpty): ```javascript xm: { ...
8. **最佳实践**: 在实际应用中,为了确保性能和用户体验,可能需要考虑异步处理大文件、分批读取和校验数据、异常处理以及友好的错误反馈机制等。 通过上述解释,我们可以看出,Java利用Apache POI和Hibernate ...
在 Spring MVC 中,可以通过配置 Hibernate Validator 的约束注解处理器,使其自动处理控制器方法参数的校验。 2.3 为 JavaBean 添加 constraint 在 JavaBean 的属性上添加 Bean Validation 或 Hibernate Validator...
Hibernate Validator是Java社区规范JSR 380的参考实现,它是一个强大的校验器,用于校验Java Bean中的数据。它不仅支持JSR 303 Bean Validation规范定义的基本注解,还包括了一些额外的自定义约束注解。Hibernate ...
Validator是Struts2提供的一种强大的数据验证机制,用于在后台进行用户输入的检查,确保数据的有效性和安全性。在"struts2_1.7_validator"这个压缩包中,可能包含了实现Struts2用户登录验证的示例代码。 Struts2的...
7. **与其他框架的集成**:在Spring框架中,`@Valid`注解可以方便地与控制器方法参数一起使用,自动进行数据校验。同时,Hibernate Validator也可以与JSF、CDI等其他Java技术栈很好地集成。 综上所述,"validator...
总结来说,基于Hibernate Validator的异步表单校验框架能够帮助开发者高效、灵活地实现数据验证,提升用户体验,同时保持代码的整洁和模块化。正确地使用这个框架,可以避免因为数据验证问题而导致的各种异常情况,...
在IT行业中,自动校验源码是一项至关重要的任务,它能确保代码的质量,减少错误,提高软件的稳定性。本文将围绕“自动校验工程源码”这一主题,深入探讨基于反射的自动校验工具类及其相关知识点。 首先,我们要理解...
4. **控制器处理**:在控制器方法中,使用`@Valid`注解标记需要验证的参数,Spring会自动调用Hibernate Validator进行验证。 ```java @RequestMapping(method = RequestMethod.POST) public String register(@Valid...
定义和实现完成后,我们可以在模型类或方法参数上使用自定义注解,Spring等框架会在执行前自动进行校验: ```java public class User { @Email private String email; } ``` 5. **异常处理** 如果校验失败...
为了处理更复杂的数据校验场景,Struts 2支持使用Validator插件,它可以读取XML配置文件或者使用JSR 303/JSR 349(Bean Validation)标准来进行校验。通过Validator插件,可以定义全局的校验规则,复用性强,同时也...
Struts2提供了强大的数据校验机制,它整合了OGNL(Object-Graph Navigation Language)表达式语言和各种校验框架,如Apache Commons Validator和Hibernate Validator。 1. **Struts2的校验流程**: - 用户通过表单...
本文将深入探讨如何实现这个过程,并重点讨论数据校验和事务回滚两个关键环节。 首先,批量导入Excel数据的核心在于读取Excel文件。在.NET中,可以使用多种库来实现这一功能,如`Microsoft.Office.Interop.Excel`...
总之,Struts2的数据校验机制是通过XML配置或注解来定义校验规则,并在用户提交数据时自动执行这些规则。理解并熟练运用这一机制对于构建健壮、安全的Web应用至关重要。通过对ITEye_ValidateAction的分析,你可以...
它允许开发者为表单中的各个输入字段设置验证规则,当用户提交表单时,这些规则会自动检查输入的数据是否符合要求。例如,你可以设定邮箱字段必须是有效的邮箱格式,密码字段要求包含数字和字母,手机号码字段需要...
4. **自定义校验**:通过实现`Validator`接口,开发者可以创建自定义校验规则,用于满足特定需求。 5. **校验结果**:校验失败后,Struts2会把错误信息存储在ActionContext中,可以在JSP页面上展示给用户。 在...
1. **数据绑定与校验**:Spring MVC 提供了自动的数据绑定功能,可以将请求参数自动绑定到处理方法的参数上。同时,通过在模型类的字段上添加注解,可以进行数据校验。例如,使用 `@NotBlank` 标记字符串不能为空,`...
Apache Commons Validator 是一个强大的数据验证框架,主要用于Java应用程序的数据输入验证。这个工具包提供了一种标准的方法来处理各种验证规则,比如检查电子邮件地址的有效性、日期格式、电话号码格式等,极大地...
在Spring中,可以使用`@Validated`注解标记待验证的模型对象,Spring会自动调用`Validator`。 6. **分组验证**:为了实现不同场景下不同的验证逻辑,Bean Validation支持分组验证。通过在注解中指定`groups`参数,...
这样,当用户提交表单时,Struts2会自动调用这些注解进行校验,并将错误信息添加到ActionContext中。 2. **基于XML配置的校验**: 对于不喜欢或不适用注解的开发者,Struts2还支持通过XML配置文件定义校验规则。在...