昨天弄了一宿,就是因为这个关于validations.xml的自动校验,感觉是挺简单的东西,可是却因为一个不显眼的地方耽误了我很多时间。
代码实例:写了一个由myeclipse6.0.1自带的struts实例,在struts-config.xml文件中加入了<plug-in>自动校验标签,以实现validation的自动校验功能。
然后在WEB-INF下创建了一个validations.xml文件,加入了以下代码:
<
form-validation
>
< formset >
< form name ="loginForm" >
< field property ="userName" depends ="required" >
< arg key ="loginForm.userName" />
</ field >
</ form >
</ formset >
</ form-validation >
< formset >
< form name ="loginForm" >
< field property ="userName" depends ="required" >
< arg key ="loginForm.userName" />
</ field >
</ form >
</ formset >
</ form-validation >
然后在相应的properties文件中加入了key的中文提示,部署运行,用户名不填时,发现怎么也不走这个验证,直接就进入了成功页面。最后,经过了多个小时的排错,发现原因出在FormBean中,在strtus向导界面建立时,它的默认是钩选上validate和reset方法的,如图:
如果FromBean中有validate方法,则myeclipse是自动认为采用的是手工校验,而不是自动校验,因此不会去调用自动校验的<plug-in>标签。在使用自动校验时应把validate方法钩去,或在FormBean中删除此方法既可。