仔细检查你在validation.xml文件中配置的form的名字是否是userForm,还有validation.xml文件内的配置是否正确,推荐你下载struts console插件,可以方便的编辑validation.xml文件,防止出错。

解决方案 »

  1.   

    to IceCraft:
      名字没有错,原来是用服务器校验,一直也没有改,struts console不是只能修改struts-config.xml吗,什么时候也能编辑validation.xml了,头一次听说。
      

  2.   

    原因找到了,因为formbean是继承自ValidatorActionForm,而html:javascript的formName我还是指定的userForm,应该是对应的action的名字了,对应的action叫/action,还有onsubmit也应该是validate/action(this),不过,虽然可以正确生成js代码,但js里的函数名不支持/,所以还是无法正确调用,查了html:javascript的文档,也没有解决问题之道,难道使用ValidatorActionForm,就得自己写客户端校验吗?看来开源的东西,功能还是不够完善,就像firefox。1.2出了吗?
      

  3.   

    我也不能确定你的问题出在哪里,不过我使用validator一切正常,自动生成正确的js。
    以前出现过页面上显示出很多js代码,并且验证无效的情况,是英文html:javascript里的name写错了。
    你还是找个例子测试一下。
      

  4.   

    我不是说了吗,是因为formbean继承的是ValidatorActionForm,它是基于action的,本来是没什么的,但因为action的名字开头都是/,但js脚本不支持/开头的函数,所以无法调用,但仍可以正常生成。
      

  5.   

    action以/开头?什么意思?
    另外你的Formbean为什么不继承ValidatorForm?
      

  6.   

    因为相同的formbean要用在不同的页面里,如增加、修改、后台管理的修改,这些的formbean要必须继承它呀,这样在,在validation.xml就要用处理它的action的名字了。
      

  7.   

    问题并非如楼主说的那样。
    我的actionForm也是继承自ValidatorActionForm,用客户端自动生成的js代码进行前台校验一点问题也没有。如果你的不行,请确认是否以下的工作你全做了:
    1、确保在validation.xml文件中有针对userForm的校验
    2、确保页面的form的action提交的确实是userForm
    3、确保页面的form的onsubmit属性等于validateuserForm(this)
    4、确保页面代码中有如下标签:<html:javascript formName="userForm"/>
      

  8.   

    哦,错了,我的是继承ValidatorForm的。
    不好意思