`
fslingmo
  • 浏览: 25813 次
  • 性别: 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。

 

 

 

分享到:
评论

相关推荐

    python-validator:像Django ORM这样的数据验证器

    python-validator 是一个类似于 Django ORM 的数据校验库,适用与任何需要进行数据校验的应用,比较常见的是 Web 后端校验前端的输入数据。 特性 支持 python2 和 python3。 使用类描述数据结构,数据字段一目了然。...

    SpringAll_wuyouzhuguli.tar.gz

    Spring Boot配合Hibernate Validator参数校验 自定义Spring Boot 内容协商 Spring Boot 中处理跨域 Spring Boot 中的异步调用 Spring Boot 整合Kafka Spring Boot整合Mongo DB Spring Boot 2.0 WebFlux编程 Spring ...

    spring-boot-test:https

    springboot My Springboot modules Springboot + maven 多模块项目 1. 2. 3. 4. 5. 6. 7. ... 12.... 13. springboot自动部署jar ... Springboot使用Validator校验 22. Springboot + WebSocket 生命不息,折腾不止!

    Spring中文帮助文档

    5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的PropertyEditor实现 6. 使用Spring进行面向切面编程(AOP...

    Spring API

    5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的PropertyEditor实现 6. 使用Spring进行面向切面编程(AOP...

    FastAPI准备之pydantic类型检查工具

    优势: 可以和IDE结合, 可以读取环境变量, 对环境变量做一些检查, 对一些用Python做自动化运维的人来说是福音,比其他的类型检查库要快,可以校验复杂的数据结构(validator),集成到FastAPI框架中写起来会很优雅, Django...

    lamp-cloud微服务脚手架

    故在hibernate-validator的基础上封装了zuihou-validator-starter起步依赖,提供一个通用接口,可以获取需要校验表单的规则,然后前端使用后端返回的规则, 以后若规则改变,只需要后端修改即可。 12、防跨站脚本...

    Spring 2.0 开发参考手册

    5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的PropertyEditor实现 6. 使用Spring进行面向切面编程(AOP...

    Javashop开发规范V2.2

    EOP自动为应用提供表单校验功能,通过指定form样式名和指定表单项特定属性的方式来完成。 5.3.1 示例 代码示例 [removed] function checkUserName(val){ if(val=='kingapex' ) return true; else return ...

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

    5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的PropertyEditor实现 5.4.2.1. 注册用户自定义的PropertyEditor ...

    spring chm文档

    5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的PropertyEditor实现 6. 使用Spring进行面向切面编程(AOP...

    asp.net知识库

    利用反射实现ASP.NET控件和数据实体之间的双向绑定,并且在客户端自动验证输入的内容是否合法 asp.net报表解决方法 SQLDMO类的使用 SQL过程自动C#封装,支持从表到基本存储过程生成 使用SQLDMO控制 SQL Server 使用SQL...

    island-koa:林间有风团队 koaLin-CMS 旧岛小程序后端 学习记录

    npm install lodash # 数据处理库 Lin-validator内需 npm install sequelize # 数据库ORM模块 npm install mysql2 # sequelize使用的驱动 npm install bcryptjs # 加密模块 npm install jsonwebtoken # jwt-token...

    lamp-cloud微服务脚手架-其他

    故在hibernate-validator的基础上封装了zuihou-validator-starter起步依赖,提供一个通用接口,可以获取需要校验表单的规则,然后前端使用后端返回的规则, 以后若规则改变,只需要后端修改即可。 12、防跨站脚本...

    ZendFramework中文文档

    2.3.1. 保存 ACL 数据确保持久性 2.3.2. 使用声明(Assert)来编写条件性的 ACL 规则 3. Zend_Auth 3.1. 简介 3.1.1. 适配器 3.1.2. 结果 3.1.3. 身份的持久(Persistence) 3.1.3.1. 在PHP Session 中的缺省...

    单点登录源码

    FluentValidator | 校验框架 | [https://github.com/neoremind/fluent-validator](https://github.com/neoremind/fluent-validator) Thymeleaf | 模板引擎 | [http://www.thymeleaf.org/](http://www.thymeleaf.org/...

    正则表达式

    正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界。 -或- 对正则表达式功能字符的还原,如"*"匹配它...

    Struts in Action中文版

    1. 介绍.........................................................................................................18 1.1. 关于本书..........................................................................

    struts in Action

    1. 介绍.........................................................................................................18 1.1. 关于本书...........................................................................

Global site tag (gtag.js) - Google Analytics