使用ActionForm的validate方法的时候是常规的Form字段校验,关于validate在xml里面的出现,一般有两种情况,一种是在ActionMapping配置的时候指定validate="true",表示要求ActionServlet要执行ActionForm里面的validate方法;另一种情况是使用Commons Validator取代ActionForm里面的validator方法(当然二者也可以同用)。看《Struts In Action》吧,关于Struts,没有哪本书比它讲地透彻了。目前中文版也发售了,只是不知道翻译质量如何。英文好的话就直接看英文版得了。

解决方案 »

  1.   

    其实Validator()函数与配置xml方式的validator框架的功能都差不多,不过基于xml方式的validator更加方便,不用写代码,它附带了几种验证例程,可以直接使用,如required/mixlength/maxlength等,此外,如果你需要的验证在validator中没有的话,可以将你自定义的验证添加到validator中,且validator不仅支持服务器端验证,也支持客户端(JavaScript)验证,而Form Bean方式的验证只提供服务器端验证接口。
    在sturts中如果要使用validator框架,必须先将其启动,启动的办法是在struts-config.xml中添加以下代码:
    <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
      <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
    </plug-in>
      

  2.   

    有一点忘记说了,要使用Form Bean能被Validator框架验证的话,Form Bean必须继承自ValidatorForm,而不能继承自ActionForm,且struts-config.xml中对应地方的validate也要设置为true
      

  3.   

    Form Bean  的验证的话,我还是认为用javascript  来做判断比较好。。
      

  4.   

    谢谢各位兄台,我还是有一些不大明白.Form Bean指的就是ActionForm吧?我把我的actionform的class改为public class loginForm extends ValidatorForm{之后就出现了"loginForm.java": cannot resolve symbol: class ValidatorForm in class struts.loginForm at line 6, column 32
    以上这个错误信息了.不知道怎么回事.
    另外,以下的代码加在struts-config.xml的什么地方呢?是在<struts-config>和</struts-config>之间吗?我用JBuilder9做的.
    <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
      <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
    </plug-in>
       还有,上面这段代码中的property="pathnames"中的pathnames指的是什么,要不要改啊?如果.jsp文件中输入的信息不合要求的话,经过Validator()验证之后,程序会自动转回原输入的.jsp文件吗?还是手工添加代码来转呀?
    (不好意思,实在不懂,别见笑)
      

  5.   

    应该是在Action 里去直接写validate方法的