很久前就已经使用过struts的validate,当时感觉不错,好用。
但后来,在做系统的时候把后台验证都省去了。所以呢,validate也就不再使用,而且感觉很难用,配置太麻烦。
一般做系统的时候,只要写个前台验证就可以了。因为自己就是管理员。呵呵。当然也不知道validate有个前台验证的功能。
现在做系统要求用户的交互性,所以前后台都得加上验证,以保证安全性。自己写前台的js已经快要疯了。后台本想使用exception来处理,但那样就开发周期又得长了。
现在只好再来使用validate
第一步:
配置插件
第二步:form
Validator框架不能直接org.apache.struts.action.ActionForm。应采用ActionForm的两个子类
ValidatorActionForm和ValidatorForm
DynaValidatorActionFrom继续自DynaValidatorForm
支持动态在ActionFrom中使用Validator框架
ValidatorFormActionForm继承ValidatorForm
支持在标准ActionForm中使用Validator框架。
DynaValidtaorForom和ValidatorForm类都实现了validator()方法,如果验证失败,就会返回包含错误消息的ActionMessage对象,并把该对象添加到ActionErrors集合对象中,由validator方法最后返回ActionErrors对象。
ValidatorForm有一个子类ValidatorActionForm
ValidatorForm
Strust配置文件的元素的name属------>validator.xml文件
元素的name属性
ValidatorActionForm
Strust配置文件的元素的path属------>validator.xml文件元素的name属性
Validator框架提供这两个类目的在于可以更加精确的控制执行验证的条件。
第三步:前台
在Jsp页面中包含< html:javascript>
< html:javascript formName=”loginForm”> 这个标签的form的name属性制定需要验证的表单名字,
他能够访问为表单配置的验证规则的javascript元素,把包含的脚本写到jsp页面中,生成validateLoginForm的函数,负责执行验证逻辑
3) 对需要验证的表单定义onsubmit事件
4)代码
< html:form action="manageContract.do" οnsubmit="return validateContractForm(this);">
5) 用户在表单上提交后,就会调用
标签生成的js脚本validateLoginForm函数,执行验证。如果验证失败,就会弹出对话框提示,
不会提交的服务器端。
validate.xml文件中的一些说明
[quote]1.<form>元素用于为表单配置验证规则,它的name属性为需要验证的ActionForm的名称,它需要与struts-config.xml中的名称一致,如此处为LoginActionForm.
2.<field>元素用于为表单字段配置验证规则,它的property属性名称需要与Login.jsp页面中的用户名文本框和密码框的property属性名一致。
3.<depends>元素为该字段所采用的验证规则有哪些,如果有多个,则使用逗号分隔。
4.参看以上<msg>一行,<msg>元素指定验证规则对应的消息文本,该消息文本将替代在validator-rules.xml文件中为验证规则配置的默认消息文本。意思即是说,如果上面使用的是<msg name="required" key="user.required" resource="true"/>,而非<arg0 name="required" key="User.name" resource="true"/>,则如果验证失败,验证规则将使用msg中key指定的消息,而非默认的errors.required消息(validator-rules.xml中定义,参看上文)。
5.<field>字段可以包含四个附加的子元素,<arg0>、<arg1>、<arg2>、<arg3>,用于替换复合消息中的参数,<arg0>指定第一个替换值,<arg1>指定第二个,依此类推。每个arg元素包含三个属性:name,key和resource,用法与<msg>相似。如上代码中<arg0 name="required" key="User.name" resource="true"/>意为使用从消息文件ApplicationResources.properties中消息key User.name取出的文本(Username)来替换默许消息文本errors.required中的参数,使之组合成一句有意思的文本,errors.required的原文本为:{0}is requuired.
[/quote]
但后来,在做系统的时候把后台验证都省去了。所以呢,validate也就不再使用,而且感觉很难用,配置太麻烦。
一般做系统的时候,只要写个前台验证就可以了。因为自己就是管理员。呵呵。当然也不知道validate有个前台验证的功能。
现在做系统要求用户的交互性,所以前后台都得加上验证,以保证安全性。自己写前台的js已经快要疯了。后台本想使用exception来处理,但那样就开发周期又得长了。
现在只好再来使用validate
第一步:
配置插件
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"
property="pathnames" />
</plug-in>
第二步:form
Validator框架不能直接org.apache.struts.action.ActionForm。应采用ActionForm的两个子类
ValidatorActionForm和ValidatorForm
DynaValidatorActionFrom继续自DynaValidatorForm
支持动态在ActionFrom中使用Validator框架
ValidatorFormActionForm继承ValidatorForm
支持在标准ActionForm中使用Validator框架。
DynaValidtaorForom和ValidatorForm类都实现了validator()方法,如果验证失败,就会返回包含错误消息的ActionMessage对象,并把该对象添加到ActionErrors集合对象中,由validator方法最后返回ActionErrors对象。
ValidatorForm有一个子类ValidatorActionForm
ValidatorForm
Strust配置文件的元素的name属------>validator.xml文件
元素的name属性
ValidatorActionForm
Strust配置文件的元素的path属------>validator.xml文件元素的name属性
Validator框架提供这两个类目的在于可以更加精确的控制执行验证的条件。
第三步:前台
在Jsp页面中包含< html:javascript>
< html:javascript formName=”loginForm”> 这个标签的form的name属性制定需要验证的表单名字,
他能够访问为表单配置的验证规则的javascript元素,把包含的脚本写到jsp页面中,生成validateLoginForm的函数,负责执行验证逻辑
3) 对需要验证的表单定义onsubmit事件
4)代码
< html:form action="manageContract.do" οnsubmit="return validateContractForm(this);">
5) 用户在表单上提交后,就会调用
标签生成的js脚本validateLoginForm函数,执行验证。如果验证失败,就会弹出对话框提示,
不会提交的服务器端。
validate.xml文件中的一些说明
[quote]1.<form>元素用于为表单配置验证规则,它的name属性为需要验证的ActionForm的名称,它需要与struts-config.xml中的名称一致,如此处为LoginActionForm.
2.<field>元素用于为表单字段配置验证规则,它的property属性名称需要与Login.jsp页面中的用户名文本框和密码框的property属性名一致。
3.<depends>元素为该字段所采用的验证规则有哪些,如果有多个,则使用逗号分隔。
4.参看以上<msg>一行,<msg>元素指定验证规则对应的消息文本,该消息文本将替代在validator-rules.xml文件中为验证规则配置的默认消息文本。意思即是说,如果上面使用的是<msg name="required" key="user.required" resource="true"/>,而非<arg0 name="required" key="User.name" resource="true"/>,则如果验证失败,验证规则将使用msg中key指定的消息,而非默认的errors.required消息(validator-rules.xml中定义,参看上文)。
5.<field>字段可以包含四个附加的子元素,<arg0>、<arg1>、<arg2>、<arg3>,用于替换复合消息中的参数,<arg0>指定第一个替换值,<arg1>指定第二个,依此类推。每个arg元素包含三个属性:name,key和resource,用法与<msg>相似。如上代码中<arg0 name="required" key="User.name" resource="true"/>意为使用从消息文件ApplicationResources.properties中消息key User.name取出的文本(Username)来替换默许消息文本errors.required中的参数,使之组合成一句有意思的文本,errors.required的原文本为:{0}is requuired.
[/quote]