`
fslingmo
  • 浏览: 26612 次
  • 性别: Icon_minigender_2
  • 来自: 厦门
社区版块
存档分类
最新评论

Validator自动校验数据

阅读更多

除了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。

 

 

 

分享到:
评论

相关推荐

    bootstrapValidator表单校验、更改状态、新增、移除校验字段的实例代码

    1. **表单验证**: BootstrapValidator允许开发者定义一系列的验证规则,如非空、邮箱格式、电话号码等,以确保用户输入的数据符合预设标准。例如,`xm`字段可能需要验证非空(notEmpty): ```javascript xm: { ...

    java 利用POI对Execel表格的统一导入与校验(利用Hibernate Validator)

    8. **最佳实践**: 在实际应用中,为了确保性能和用户体验,可能需要考虑异步处理大文件、分批读取和校验数据、异常处理以及友好的错误反馈机制等。 通过上述解释,我们可以看出,Java利用Apache POI和Hibernate ...

    Hibernate Validator校验框架

    在 Spring MVC 中,可以通过配置 Hibernate Validator 的约束注解处理器,使其自动处理控制器方法参数的校验。 2.3 为 JavaBean 添加 constraint 在 JavaBean 的属性上添加 Bean Validation 或 Hibernate Validator...

    hibernate validator 校验器

    Hibernate Validator是Java社区规范JSR 380的参考实现,它是一个强大的校验器,用于校验Java Bean中的数据。它不仅支持JSR 303 Bean Validation规范定义的基本注解,还包括了一些额外的自定义约束注解。Hibernate ...

    struts2用户登录实例的validator后台校验

    Validator是Struts2提供的一种强大的数据验证机制,用于在后台进行用户输入的检查,确保数据的有效性和安全性。在"struts2_1.7_validator"这个压缩包中,可能包含了实现Struts2用户登录验证的示例代码。 Struts2的...

    validator校验所需jar包

    7. **与其他框架的集成**:在Spring框架中,`@Valid`注解可以方便地与控制器方法参数一起使用,自动进行数据校验。同时,Hibernate Validator也可以与JSF、CDI等其他Java技术栈很好地集成。 综上所述,"validator...

    基于hibernate_validator的异步表单校验框架依赖文件

    总结来说,基于Hibernate Validator的异步表单校验框架能够帮助开发者高效、灵活地实现数据验证,提升用户体验,同时保持代码的整洁和模块化。正确地使用这个框架,可以避免因为数据验证问题而导致的各种异常情况,...

    自动校验工程源码

    在IT行业中,自动校验源码是一项至关重要的任务,它能确保代码的质量,减少错误,提高软件的稳定性。本文将围绕“自动校验工程源码”这一主题,深入探讨基于反射的自动校验工具类及其相关知识点。 首先,我们要理解...

    Hibernate Validator校验框架Demo

    4. **控制器处理**:在控制器方法中,使用`@Valid`注解标记需要验证的参数,Spring会自动调用Hibernate Validator进行验证。 ```java @RequestMapping(method = RequestMethod.POST) public String register(@Valid...

    自定义校验注解框架(validator)

    定义和实现完成后,我们可以在模型类或方法参数上使用自定义注解,Spring等框架会在执行前自动进行校验: ```java public class User { @Email private String email; } ``` 5. **异常处理** 如果校验失败...

    Struts 2 数据校验功能及校验问题的解决方案

    为了处理更复杂的数据校验场景,Struts 2支持使用Validator插件,它可以读取XML配置文件或者使用JSR 303/JSR 349(Bean Validation)标准来进行校验。通过Validator插件,可以定义全局的校验规则,复用性强,同时也...

    struts2 简单数据校验

    Struts2提供了强大的数据校验机制,它整合了OGNL(Object-Graph Navigation Language)表达式语言和各种校验框架,如Apache Commons Validator和Hibernate Validator。 1. **Struts2的校验流程**: - 用户通过表单...

    批量导入Excel数据到数据库,带数据校验/事务回滚

    本文将深入探讨如何实现这个过程,并重点讨论数据校验和事务回滚两个关键环节。 首先,批量导入Excel数据的核心在于读取Excel文件。在.NET中,可以使用多种库来实现这一功能,如`Microsoft.Office.Interop.Excel`...

    struts2校验数据

    总之,Struts2的数据校验机制是通过XML配置或注解来定义校验规则,并在用户提交数据时自动执行这些规则。理解并熟练运用这一机制对于构建健壮、安全的Web应用至关重要。通过对ITEye_ValidateAction的分析,你可以...

    BootstrapValidator-0.5.3表单验证

    它允许开发者为表单中的各个输入字段设置验证规则,当用户提交表单时,这些规则会自动检查输入的数据是否符合要求。例如,你可以设定邮箱字段必须是有效的邮箱格式,密码字段要求包含数字和字母,手机号码字段需要...

    struts2 类型转换 数据校验

    4. **自定义校验**:通过实现`Validator`接口,开发者可以创建自定义校验规则,用于满足特定需求。 5. **校验结果**:校验失败后,Struts2会把错误信息存储在ActionContext中,可以在JSP页面上展示给用户。 在...

    大三(二)springmvc数据校验.zip

    1. **数据绑定与校验**:Spring MVC 提供了自动的数据绑定功能,可以将请求参数自动绑定到处理方法的参数上。同时,通过在模型类的字段上添加注解,可以进行数据校验。例如,使用 `@NotBlank` 标记字符串不能为空,`...

    apach基于数据验证的工具包 commons-validator-1.3.1.jar

    Apache Commons Validator 是一个强大的数据验证框架,主要用于Java应用程序的数据输入验证。这个工具包提供了一种标准的方法来处理各种验证规则,比如检查电子邮件地址的有效性、日期格式、电话号码格式等,极大地...

    Validator

    在Spring中,可以使用`@Validated`注解标记待验证的模型对象,Spring会自动调用`Validator`。 6. **分组验证**:为了实现不同场景下不同的验证逻辑,Bean Validation支持分组验证。通过在注解中指定`groups`参数,...

    struts2的数据校验

    这样,当用户提交表单时,Struts2会自动调用这些注解进行校验,并将错误信息添加到ActionContext中。 2. **基于XML配置的校验**: 对于不喜欢或不适用注解的开发者,Struts2还支持通过XML配置文件定义校验规则。在...

Global site tag (gtag.js) - Google Analytics