Struts-validation验证框架不起作用

 

自己当时把formbean设置成 DynaValidatorActionForm了,改正成为DynaValidatorForm即可。
下面是当时网上看到的两篇文章,觉得有意义:
(一)
搞了几天Validator框架验证,怎么做它都不起作用,我找了N个资料,都没查出来问题所在。终于,发现了问题,我把LoginForm.java(例子),就是表单Bean中的默认验证方法validate()删掉后就起作用了,至今没发现有一个资料说要删掉它,(可能需要在某个文件里设置一下)都是说它会被验证框架的validate()方法覆盖掉,只要在<action></action>属性中设置 validate="true",反正我的是没被覆盖掉,它一直在起作用,所以我的validation.xml不起作用。当然在创建FormBean时可以不选择创建validate()方法,也就没那么多事了。如果创建了,不想删掉的话,就改个名字可以改成validator(),改成其他的名字我没试过。目的就是屏蔽掉它。
        如果想在客户端验证,就要这样写 <html:form action="/login" οnsubmit="return validateLoginForm(this)"> validate+表单名(), 表单名第一个字母要大写,还要在上写 <html:javascript formname="loginForm"> </html:javascript> ,就行了。它会产生javascript代码,可以看一下页面的源代码。至于让validate()方法和validation.xml同时起作用,

那么在Form Beans中重载了validate方法的话,就会覆盖原有ValidatorForm中对应的功能,所以如果想

一起用的话,需要在Form Beans的validate方法中调用errors = super.validate(mapping, request);

这句代码是启用Validate框架所要做的工作,然后可以判断errors再作下一步的处理。

</html:form>
(二)
 要启动客户端验证,必须将HTML标记库的javascript标记放入在jsp页面文件中,例如:
        <html:javascript formName="selectForm"/>.
        而且要在form标签中这样写<html:form action = "/selectAction.do"method = "post" focus="userId" οnsubmit="return validateSelectForm(this);">
        注意DynaValidatorForm(ValidatorForm)和DynaValidatorActionForm(ValidatorActionForm)的区别。前者主要的视角是formbean,而后者的视角是action。 
        当formbean被不同的action使用时,对于不同的action而言,使用的formbean的属性集合有大有小。此时如果仍然以formbean为主体,会造成其他action的不正常使用。因此,struts中提出了DynaValidatorActionForm(ValidatorActionForm)。此时在validation.xml中的form标签的name属性改为action的path属性,又由于action中有attribute和name属性,validation框架就可根据这个action得到对应的formbean。
同时注意页面文件的相应控件也要改为action的path属性。例:<html:javascript formName="/selectAction"/>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值