struts的表单验证validation主要是两种,楼主所说的我的理解是继承ValidatorForm在form中进行验证,还有就是使用validator-rules.xml进行验证,后者也可以生成js来验证,后者速度上有一些优势,而且扩展性强,可以作一些页面的基本验证,而一些业务上需要的特殊验证还是需要在form里面进行点击取消按钮就会提交,你可以写个js,判断false的时候就不提交

解决方案 »

  1.   

    楼主:
    在实际应用中客户端和服务器端都需要做验证.
    在客户端验证真正目的是友好提示大部分正常用户要合法输入,因为不合法输入是无效的.
    而并不是起到验证作用.真正验证作用在服务器采,用validator只是检验程序的方式之一.
    当然你也可以不用struts的结构,自己写验证类.为什么说客户但验证事实上并没有起作用?因为,懂得技术的用户,可以直接写发送post请求.不采用你的提交页面,这样就绕过客户端验证.所以如果需要提交数据并保存的地方或者是其他需要验证的地方都是放在服务器端的.如果你放心你的用户的都是有良好道德的话.你就采用javascript就可以了.因为服务本身不担心.
    但是,如果你不放心所有的用户都是良好的话,即使只有一个不良好的用户(采用http协议,发生post,get请求等)那么你也需要在服务器上写在action写!=null&&!=""的验证.没有什么其他的办法.
      

  2.   

    我们项目直接就是只用javascript
      

  3.   

    validator只是针对一些业务进行特殊验证,其它的验证还是JS比较好
      

  4.   

    按canel应该是不会进入action得才对吧
      

  5.   

    我是从来不用validator的,都是直接用js来控制,这样比较简单。而对于服务器端控制,我拿到action中控制去了:),虽然这有些不符合structs的初衷,但是方便,我的formbean实际上就是javabean,没有一点数据过滤的判断功能。实际上,formbean我也是被structs强迫用的。
      

  6.   

    to:飞星
    我发现一些门户网站都是用web页提示错误信息,javascript只是做一些简单的验证(比如登录),唉,迷茫阿
      

  7.   

    viewtifuljoey(小白),是我表达的有问题,cancel会绕过actionbean的验证,直到到actionservlet!
      

  8.   

    不要和别人学,自己觉得怎么方便才是最好的。另外,在web页显示错误信息,就是在服务器端进行验证的,你可以使用validator,但使用我说的放在action中控制也一样没什么不好啊。我并不觉得把验证放到action中就严重违反了structs的哪个特性,也没有谁硬性规定非要把验证从action中剥离开来。
      

  9.   

    我现在都是用js多,要学习下validator才行。
      

  10.   

    Validator:如果页面里组件的数据是从数据库取得,验证不通过回来以后就出错了,保存在session里就没有问题,所以简单页面才使用Javascript:使用简单且不需要提交到服务器端就可以验证,减少服务器负担,而且多么复杂(联动,计算,隐藏,显示,自动增加行等等)都可以验证