`
iRoger
  • 浏览: 29303 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

表单验证:使用struts中的validator框架

阅读更多
第一步:

我们在struts-config.xml里:
<action-mappings > 
<action 
attribute="logForm" 
input="/form/log.jsp" 
name="logForm" 
path="/log" 
scope="request" 
type="com.yourcompany.struts.action.LogAction" 
validate="true" 
<forward name="s" path="/form/MyJsp.jsp" /> 
</action> 
里面必须加上validate="true"这么句代码,否则,验证机制将可能不会运行。
另外,配置文件中还须加入以下代码,表示使用插件:
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
		<set-property property="pathnames"
			value="/WEB-INF/validator-rules.xml,
                                              /WEB-INF/validation.xml" />
</plug-in> 

注意加入<plug-in>标签的位置,该标签应该放在struts配置文件中的最后,具体位置在元素<struts-config></struts-config>内部,在<message-resources parameter="com.blog.struts.ApplicationResources" />之后,切记要注意位置,不然报错。
其次,在写法上,value的内容中/WEB-INF/validator-rules.xml是默认的,因为在项目使用struts框架时该文件已经在此目录层次下面了,那么之后的/WEB-INF/validation.xml"又是什么呢?这里需要我们手动在WEB-INF目录下新建validation.xml文件,这个文件有什么用?先看下其中写的什么。
<form-validation>
	<global>
	</global>
	<formset>
		<form name="userForm">
			<field property="userName"
				depends="required,minlength,maxlength">
				<arg0 key="userForm.userName" />
				<arg1 name="minlength" key="${var:min}"
					resource="false" />
				<arg1 name="maxlength" key="${var:max}"
					resource="false" />
				<var>
					<var-name>min</var-name>
					<var-value>6</var-value>
				</var>
				<var>
					<var-name>max</var-name>
					<var-value>20</var-value>
				</var>
			</field>
			<field property="password"
				depends="required,minlength,maxlength,mask">
				<arg0 key="userForm.password" />
				<arg1 name="minlength" key="${var:min}"
					resource="true" />
				<arg1 name="maxlength" key="${var:max}"
					resource="true" />
				<var>
					<var-name>min</var-name>
					<var-value>6</var-value>
				</var>
				<var>
					<var-name>max</var-name>
					<var-value>20</var-value>
				</var>
				<var>
					<var-name>mask</var-name>
					<var-value>^\w+$</var-value>
				</var>
			</field>
			<field property="email" depends="required,email">
				<arg0 key="userForm.email" />
			</field>
			<field property="name" depends="required,maxlength">
				<arg0 key="userForm.name" />
				<arg1 name="maxlength" key="${var:max}"
					resource="false" />
				<var>
					<var-name>max</var-name>
					<var-value>20</var-value>
				</var>
			</field>			
			<field property="tel" depends="required,mask">
				<arg0 key="userForm.tel" />
				<var>
					<var-name>mask</var-name>
					<var-value>^\(?(\d{3,4})\)?[-|]?(\d{7,8})$</var-value>
				</var>
			</field>
			<field property="address" depends="required">
				<arg0 key="userForm.address" />
			</field>
		</form>
		<form name="categoryForm">
			<field property="categoryName" depends="required">
				<arg0 key="categoryForm.categoryName" />
			</field>
		</form>
	</formset>
</form-validation>

Validation.xml:该配置文件是专供应用程序使用的,其中所描述的是特定ActionForm会用到validation-rule.xml文件中的哪些验证器。

1.<form-validation>元素
<form-validation>元素是validation.xml文件的根元素,它包含两个子元素:<global>和<formset>元素。其中<global>元素可以出现零次或多次,<formset>元素可以出现一次或多次。

2.<global>元素
<global>元素中通过<constant>子元素来定义常量表达式,每个<constant>子元素定义一个常量表达式,如果有多个常量表达式要定义则可以配置多个<constant>来实现。

3.<formset>元素
<formset>元素包括两个子元素<constant>和<form>。<constant>元素可以出现零次或多次,<form>元素可以出现一次或多次。
这里需要注意的是,在<form>标签中有包括<field>子元素。

4.<field>元素
<field>元素通过property属性指定字段的名字,通过depends属性指定具体的验证规则,验证规则来源于validation-rule.xml中所写的验证方法,这里我们要简单介绍一下validation-rule.xml里面的验证规则是默认,那如果我们有需要定义自己的验证规则也可以写在里面。<field>元素可包含的子元素为<msg>,<arg>,<var>。

第二步
把validator框架使用的消息文本添加到应用的Resource Bundle中,如在ApplicationResources.properties中加入例如:
errors.header=<b><font color=ff0000><ul>
errors.footer=</ul></font></b>
errors.prefix=<li>
errors.suffix=</li>

error.isexit=\u7528\u6237\u540d\u5df2\u5b58\u5728\uff0c\u8bf7\u91cd\u65b0\u6ce8\u518c\uff01
error.username=\u7528\u6237\u540d\u4e0d\u5408\u6cd5\uff0c\u8bf7\u91cd\u65b0\u586b\u5199\u7528\u6237\u540d\uff01
error.password=\u5bc6\u7801\u4e0d\u5408\u6cd5\uff0c\u8bf7\u91cd\u65b0\u586b\u5199\u5bc6\u7801\uff01

errors.required={0}\u4e3a\u5fc5\u586b\u5b57\u6bb5
errors.minlength={0}\u7684\u957f\u5ea6\u4e0d\u80fd\u5c0f\u4e8e{1} 
errors.maxlength={0}\u7684\u957f\u5ea6\u4e0d\u80fd\u5927\u4e8e{1} 
errors.email={0}\u5fc5\u987b\u4e3a\u6709\u6548\u90ae\u4ef6\u5730\u5740

userForm.userName=\u7528\u6237\u540d;
userForm.password=\u5bc6\u7801;
userForm.email=Email;
userForm.name=\u59d3\u540d;
userForm.sex=\u6027\u522b;
userForm.tel=\u8054\u7cfb\u7535\u8bdd;
userForm.address=\u8054\u7cfb\u5730\u5740;
userForm.userType=\u7528\u6237\u7c7b\u522b;

categoryForm.categoryName=\u7c7b\u522b\u540d\u79f0



第三步
将Form的extends  ActionForm改为extends  ValidatorForm


第四步
在jsp页面当中,如果我们要创建一个在服务器端验证的页面,我们只需要在控件之后添加<html:errors property="password"/>,即:
<tr>
     <td>密码:</td>
     <td><html:password property="password" /><html:errors property="password"/></td>
</tr>
注意<html:errors property="password"/>之中的property对应的是form中定义的属性。

那么如果我们要创建一个在客户端进行验证的页面,我们需要如下步骤:
1.在<html:form></html:form>的外面加上<html:javascript formName="userForm"/>
2.在<html:form>中加入属性onsubmit=”return validateCardForm(this);”,即;
<html:form action="/save_user" method="post" enctype="multipart/form-data" onsubmit="return validateUserForm(this);">
3.同服务器端验证一样<td><html:password property="password" /><html:errors property="password"/></td>
重点
使用validator进行表单验证的步骤如上,其中最为关键的一步是,validation.xml文件中为表单配置验证规则的写法。
注意事项如下:
<form-validation>
<global>
在<global>中定义的常量表达式,在文件的其余地方可以直接引用。
即,这里配置的常量表达式是全局的
写法为:
<constant>
<constant-name>phone</constant-name>
<constant-value>^\(?(\d{3})\)?[-|]?(\d{8})$<constant-value>
//定义一个名为:phone的正则表达式,3位区号+8位号码
</constant>
</global>
<formset>
<form name="userForm">
<field property="userName"
//这里的property要与form表单属性名对应
depends="required,minlength,maxlength">
//这里的depends用于指定对该属性使用什么验证规则,其规则来自于validator-rule.xml文件中所写的规则。指定多个验证器时,会依次调用,直到该表单通过所有验证。
<arg0 key="userForm.userName" />
//arg0对应的是ApplicationResources.property中的{0},即:
“errors.required={0}不能为空”,其作用是将arg0中key所对应的资源文件中的“userForm.userName=用户名”的文中或者说是值替换到“errors.required={0}不能为空”中的{0},这样页面输出的是“用户名不能为空”;
下面的arg1同理{1}
				<arg1 name="minlength" key="${var:min}"
					resource="false" />
				<arg1 name="maxlength" key="${var:max}"
					resource="false" />
				<var>
					<var-name>min</var-name>
					<var-value>6</var-value>
				</var>
				//var对应key="${var:min}"中的min
				<var>
					<var-name>max</var-name>
					<var-value>20</var-value>
				</var>
			</field>
</form>
	</formset>
</form-validation>
分享到:
评论
9 楼 grandboy 2009-02-01  
这个框架当初就觉得有点复杂。后来写js做client的验证,重要逻辑自己写java来做server的验证。
8 楼 gyw230 2009-01-22  
<field property="userName" 
                depends="required,minlength,maxlength">  
                <arg0 key="userForm.userName" />  
                <arg1 name="minlength" key="${var:min}" 
                    resource="false" />  
                <arg1 name="maxlength" key="${var:max}" 
                    resource="false" />  
                <var>  
                    <var-name>min</var-name>  
                    <var-value>6</var-value>  
                </var>  
                <var>  
                    <var-name>max</var-name>  
                    <var-value>20</var-value>  
                </var>  
            </field>  
在你写地这段代码中。那个key中所定义的变量key="${var:min}" 和<var-name>min</var-name>   中那个变量的名字可以随便写一个行吗?(key="${var:m}" 和<var-name>m</var-name> )像我括号里边写地这样行吗?我试了好几次都不行啊。还是它原来就定义好了。必须用这个名字验证才可以出来。
7 楼 tangbo530 2008-12-20  
你可以使用ValidateActionForm!
6 楼 tangbo530 2008-12-20  
XmKevinChen 写道
应该是Struts1.x的validator框架吧

这个框架在使用上有一点的局限:
在应用上如果碰到一个ActionForm在多个地方被使用但是要求验证的内容不同,validator就没有办法很好处理。当然,上述的情况,可能是ActionForm设计的不合理或者其他什么原因造成的就是了

validator的本质其实也是JavaScript(如果我没有理解错误的话),而作J2EE的各位开发者(尤其是前台的coder们),JavaScript是必修的基本功了


呵呵,不要误导观众
可以使用ValidatorActionForm
其次,你说他的本质是js验证,那请你回去好好看看验证框架,不敢苟同!
5 楼 icefire 2008-12-15  
XmKevinChen 写道
应该是Struts1.x的validator框架吧

这个框架在使用上有一点的局限:
在应用上如果碰到一个ActionForm在多个地方被使用但是要求验证的内容不同,validator就没有办法很好处理。当然,上述的情况,可能是ActionForm设计的不合理或者其他什么原因造成的就是了

validator的本质其实也是JavaScript(如果我没有理解错误的话),而作J2EE的各位开发者(尤其是前台的coder们),JavaScript是必修的基本功了


你确认吗??
4 楼 ttyyty 2008-12-15  
3 楼 hotdog 2008-05-28  
在我们的项目里面没有使用这个框架, 太复杂。
2 楼 XmKevinChen 2008-05-27  
应该是Struts1.x的validator框架吧

这个框架在使用上有一点的局限:
在应用上如果碰到一个ActionForm在多个地方被使用但是要求验证的内容不同,validator就没有办法很好处理。当然,上述的情况,可能是ActionForm设计的不合理或者其他什么原因造成的就是了

validator的本质其实也是JavaScript(如果我没有理解错误的话),而作J2EE的各位开发者(尤其是前台的coder们),JavaScript是必修的基本功了
1 楼 mingyuan 2008-05-26  
很好很详细~用实例讲解我觉得最易懂~谢谢楼主分享~

相关推荐

    struts 的validator框架验证

    Struts的Validator框架是Java Web开发中用于处理用户输入验证的一种强大的工具,它与MVC架构中的控制器层紧密结合,提供了一种便捷的方式来确保用户提交的数据符合预设的业务规则。这个框架大大简化了数据验证的过程...

    Struts1的validator验证框架

    其中,Validator框架是Struts1用于客户端和服务端表单验证的强大工具,它能显著提高数据处理的安全性和准确性。本文将深入探讨Struts1 Validator框架的核心概念、配置与实现细节。 #### 一、Struts1 Validator框架...

    struts中使用validator验证框架

    在本文中,我们将深入探讨如何在Struts中使用Validator框架,并通过三个逐步进阶的实例来理解其工作原理。 首先,我们来看第一个实例——Validator_Struct_01。在这个基础案例中,我们将了解如何设置基本的...

    struts validator验证框架项目

    在Struts Validator框架中,验证规则通常定义在`validation.xml`配置文件中。这些规则包括字段名、验证规则类型(如长度、正则表达式等)和错误消息。例如,描述中的"用户名满足6位以上"可以通过以下配置实现: ``...

    struts1.x validator框架验证入门例子

    在这个入门例子中,你可以创建一个简单的表单,使用Struts1.x的Validator框架进行验证。首先创建表单HTML页面,然后编写对应的ValidatorForm和Action,最后配置struts-config.xml和ValidatorRule.xml。运行项目,...

    Struts的Validator验证框架使用教程

    2. 验证过程:当用户提交表单时,Struts会自动调用Validator框架对ActionForm中的数据进行验证。如果验证失败,错误信息会被添加到ActionForm的fieldErrors集合中,然后可以在JSP页面上显示出来。 四、自定义验证器...

    struts1.3实现的Validator简单验证

    Validator是Struts框架中的一个关键组件,用于处理用户输入验证,确保数据的有效性和一致性。在Struts1.3中,Validator功能得到了进一步的增强和优化,相比Struts1.2,它引入了一些新的特性和改进。 在Struts1.3中...

    struts1.x使用common-validator验证框架

    在Struts1.x中使用Common-Validator框架,你需要遵循以下步骤: 1. **引入依赖**:首先,你需要在项目的类路径下添加Common-Validator的jar包,通常这会是`commons-validator.jar`和`commons-digester.jar`。这些库...

    struts validator验证框架例子

    4. **Interceptor**:在Struts2中,Validator框架通过拦截器(Interceptor)机制实现数据验证。当请求到达Action时,验证拦截器会先执行,如果验证失败,请求将不会继续到Action,而是直接返回到错误页面。 **错误...

    struts的validator框架

    - Validator框架是Apache Struts2的核心组件之一,主要用于处理表单验证。 - 它基于XML配置文件和Java注解,可以灵活地定义验证规则。 - 验证规则可以包括字段的非空检查、长度限制、数据类型检查等。 2. **工作...

    struts_注册验证_Validator框架

    Struts Validator框架是Apache Struts框架的一个组成部分,主要用于处理Web应用程序中的数据验证。这个框架提供了一种方便的方式来定义和执行验证规则,使得开发者能够轻松地在注册或其他表单提交过程中确保用户输入...

    Struts validator验证框架

    总结,Struts Validator框架是Java Web开发中一个重要的数据验证工具,它通过配置文件和注解方式定义验证规则,提高了开发效率和代码质量。同时,其自定义验证功能使框架具有高度的灵活性,适用于各种复杂场景。通过...

    IBM 的 Struts validator框架

    Struts Validator框架是Apache Struts框架的一个重要组成部分,由IBM公司提供支持,它主要用于Web应用程序中的数据验证。这个框架提供了一种结构化的方式来定义和执行客户端及服务器端的数据验证规则,确保用户输入...

    struts的表单验证

    在Struts框架中,表单验证通常通过两个主要方式实现:客户端验证和服务器端验证。 1. 客户端验证: 客户端验证发生在用户的浏览器上,通常使用JavaScript或jQuery等库来执行。这种方式可以即时反馈错误,提高用户...

    struts验证器validator使用,以及自定义验证器

    Struts Validator是Struts框架提供的表单验证工具,它通过XML配置文件定义验证规则,可以对用户提交的数据进行有效性检查,确保输入符合业务逻辑的要求。Validator不仅支持内置的验证规则,如非空、长度限制等,还...

    Struts简单的Validator 表单验证类

    总的来说,Struts的Validator框架提供了强大的表单验证功能,可以帮助开发者有效地管理和控制用户输入,确保数据的准确性和一致性。通过理解和运用这个框架,可以提升Web应用的质量和用户体验,同时减少服务器端的...

    03_张孝祥09年Struts视频_validator单元3.rar

    在Struts框架中,Validator的作用至关重要,它提供了强大的表单验证功能,能够确保从用户那里接收到的数据符合预设的规则。Validator框架允许开发者定义一套验证规则,并在用户提交表单时自动执行这些规则,从而减少...

    一个validator的验证程序.rar_struts_validator

    这个“一个validator的验证程序.rar_struts_validator”压缩包包含了一个作者自编的小程序,旨在展示如何在Struts应用中集成和配置Validator框架。 Struts Validator的主要功能是检查用户输入的数据,确保它们符合...

    Struts的Validator-rules详解

    Struts的Validator-rules是Apache Struts框架的一个关键组件,主要用于处理Web应用中的表单验证。这个组件使得开发者能够方便地定义和实现客户端与服务器端的数据验证规则,从而确保用户输入的数据符合业务逻辑的...

Global site tag (gtag.js) - Google Analytics