以前一直没有用过struts的validation框架,今天试了一下。
测试环境:
tomcat6 ,jdk1.5,IE7 ,Firefox3
需要的文件
validator-rules.xml(myeclipse 生成,或者在网上下载)
validation.xml(自己添加)
ApplicationResources.properties(struts自身的资源文件)
包
commons-validator.jar(validation需要)
jakarta-oro.jar(validation需要)
struts.jar
(client)javascript验证步骤:
1 通过myeclipse插件,添加了struts的代码,自动在WEB-INF有validator-rules.xml文件
。validator-rules.xml文件当中包含了所有一般的验证代码。(一般情况下不用修改)
2 编写validation.xml
?
?<form-validation>
?<formset>
??<form name="userForm">
???<field property="userName" depends="required">
????<arg0 key="userForm.userName">
???</field>
???<field property="userPassword" depends="required,minlength,maxlength">
????<arg0 key="userForm.userPassword">
????<arg1 key="${var:minlength}" name="minlength" <br="">?????resource="false" />
????<arg1 key="${var:maxlength}" name="maxlength" <br="">?????resource="false" />
????
?????<var-name>maxlength</var-name>
?????<var-value>16</var-value>
????
????
?????<var-name>minlength</var-name>
?????<var-value>3</var-value>
????
???</field>
??</form>
?</formset>
</form-validation>
|
??注意如果:lib中存在commons-digester.jar的话,需要注意validator-rules.xml和validation.xml的DTD
?我这里用的是struts1.2.9,DTD是validator_1_1_3.dtd
3 编写ApplicationResources.properties文件
? 添加
? # Struts Validator Error Messages
?? errors.required={0} is required.
?? errors.minlength={0} can not be less than {1} characters.
?? errors.maxlength={0} can not be greater than {1} characters.
?# custom Validator parameter
?? userForm.userName = username
?? userForm.userPassword = password
|
?4 在对应的XXX.jsp
? 添加
? a:
? ?自动生成对应的javascript代码
? b:????onsubmit="return validateUserForm(this)">
? onsubmit="return validateUserForm(this)"
??????? 添加的是验证form的代码
?
根据这些步骤网上的前辈都说可以调试通过。但是我经过的我的测试发现
struts1.1 ,和struts1.2都存在相同的问题
这里用IE7+Compasion JS+ms debugger或者是Firefox3+Venkman调试
错误点1:
在调用oRequired = eval('new '+formValue+'_required()');出现出错
在Venkman中查看formValue变量。天啊,居然有变量后面有个空格。
反编译commons-validator,查看commons-validatororgapachecommonsvalidatorjavascript源码
js中添加下列函数
?function trim(s) {
??????? return s.replace( /^s*/, "" ).replace( /s*$/, "" );
??? }
oRequired = eval('new '+formValue+'_required()')改为
oRequired = eval('new '+trim(formValue)+'_required()')
|
?
错误点2:
XXX_required () {...}居然又有空格。
反编译struts.jar,查看strutsorgapachestruts aglibhtmlJavascriptValidatorTag
修改append(" () { ")为append("(){ ")
最后重新将这两个东西进行jar打包,测试通过。
分享到:
相关推荐
### Struts1.2中的Validation验证框架实现步骤详解 #### 一、环境配置与准备工作 在Struts1.2框架中实现验证功能首先需要完成环境配置。这包括添加必要的库文件(JAR包)、配置XML文件等。 ##### 1.1 添加...
在本项目总结中,我们将深入探讨Struts2的核心特性、工作原理以及如何在实际项目中应用。 一、Struts2框架基础 1. 动态方法调用(Dynamic Method Invocation,DMI):Struts2允许通过URL直接调用Action类的方法,...
在Struts2框架中,`validation.xml`是用于定义验证规则的重要配置文件。根据所提供的信息,我们可以了解到文章主要探讨了Struts2中两种不同的`validation.xml`配置方式,并且通过一个具体的例子进行了说明。下面将对...
总结,Struts2的Validation框架为Java Web开发提供了一种灵活且强大的数据验证解决方案。开发者可以通过XML配置或注解定义验证规则,利用内置或自定义验证器检查用户输入,同时支持国际化和与Hibernate Validator的...
"Inline Form Validation Engine+Struts2的AJAX验证" 这个标题提到了两个关键组件,一个是Inline Form Validation Engine,另一个是Struts2的AJAX验证。Inline Form Validation Engine是一个前端表单验证插件,它...
### Struts2输入校验深度解析 #### 一、手动输入完成校验 在Struts2框架中,输入校验是确保数据完整性和安全性的重要环节。对于手动输入完成校验,Struts2提供了灵活的机制。 1. **普通处理方式**:在Action类中...
1. Struts2内置了一些拦截器,如Params、ServletConfig、fileUpload、exception、validation和Workflow。 2. 可以自定义拦截器,定义拦截规则,并在struts.xml中配置拦截器栈。 3. 拦截器栈中的顺序决定了执行顺序,...
总结,Struts2的输入校验机制提供了手动和自动两种方式,结合配置文件和内置校验器,能够实现灵活且强大的数据校验,有效地防止了非法数据的流入,提升了系统的安全性。在实际开发中,开发者可以根据业务需求选择...
开发者可以自定义拦截器,也可以使用Struts2内置的拦截器,如Validation拦截器用于验证表单数据,Exception拦截器用于统一处理异常。 5. **Model-View-Controller(MVC)**:Struts2遵循MVC架构,Model代表业务数据...
总结起来,Struts提供了多种验证方式,包括ActionForm验证、XML配置的Validation框架、动态验证、Tiles验证、拦截器验证、第三方验证库集成以及客户端的AJAX验证。选择合适的方式取决于项目需求和团队偏好,重要的是...
在这个“Struts2项目开发经验总结”中,我们将深入探讨Struts2的核心概念、关键特性以及在实际项目中的应用。 首先,Struts2作为控制器,负责处理HTTP请求,并通过Action类来执行业务逻辑。Action类是Struts2的核心...
### Struts2框架深入解析与自学总结 #### Struts2框架简介 Struts2是Apache组织维护的一个开源框架,它是Struts1的升级版本,基于MVC(Model-View-Controller)架构模式,用于简化Java Web应用的开发过程。Struts2...
本总结将深入探讨Struts2的核心概念、配置、Action的创建、数据操作、值栈以及拦截器的使用,旨在帮助初学者快速上手并深入理解Struts2。 一、Struts2入门 Struts2作为Apache软件基金会的一个项目,是Struts1的升级...
Struts2内建了一些拦截器,如Validation拦截器用于表单验证,SessionAware拦截器处理session相关操作等。 4. **Result**:Action执行完成后,会返回一个结果,Struts2支持多种结果类型,如dispatcher(重定向或转发...
6. **Validation拦截器**:进行表单验证,基于Struts2的Validation框架。 7. **ChainDispatchAction拦截器**:处理多Action的分发,一个请求可以触发多个Action的执行。 8. **FileUpload拦截器**:处理文件上传,...
#### 七、总结 Struts2框架提供了多种验证机制,涵盖了基本的数据类型验证需求。通过上述示例可以看出,无论是非字段风格还是字段风格配置,都具备其独特的应用场景和优势。开发者可以根据实际项目需求选择合适的...