struts的validate

很久前就已经使用过struts的validate,当时感觉不错,好用。
但后来,在做系统的时候把后台验证都省去了。所以呢,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]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值