`
mackmack
  • 浏览: 21078 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

struts validation总结

阅读更多

以前一直没有用过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

?

?

????????? "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"

????????? " http://jakarta.apache.org/commons/dtds/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打包,测试通过。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics