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