Struts Web应用程序:可重用的validation客户端和服务器端

我们的Struts应用程序复制了许多表单的validation检查:(1)jQuery / JS中的客户端,以及(2)Java中的服务器端。

我问我的主角为什么,他说“你永远不能相信客户端。” 但另一方面,为方便起见,他希望在浏览器中提供JS / jQueryvalidation。

有很多冗余代码。 在双方都有可重复使用的validation的正确策略是什么? 这些天人们手动复制客户端/服务器端validation吗?

  • 服务器端validation是强制性的 :请求可以来自修改后的网页,例如使用FireBug或任何类型的DevTools更改规则。 甚至更容易,请求可以由恶意用户制作,来自页面(或javascript块,或其他)创建的ad-hoc ,完全绕过您的页面。

把它想象成你家的门:有了它,没有正确钥匙的人就无法进入。 没有它,任何人都可以进入。

  • 客户端validation是用户友好性能友好的 :它可以防止用户等待服务器的否定响应,它可以防止网络充斥着可能已经停止的错误请求(考虑到用户数量和上传文件的可能性)随着表格数据,这可能很快达到临界质量)。

把它想象成在大楼外面有对讲机的门。 有了它,如果你不回答对讲机,人们会立即离开。 没有它,人们需要进入建筑物,爬楼梯,敲门……只是发现你不在家。

需要应用服务器端validation,在Struts2的情况下,可以通过validate()validateXXX()方法,或通过XML Validation ,或使用注释(使用内置的Struts2 Annotations per-action或jsr303) -UmeshAwasthi每个实体的-validator-plugin )。

如果要将服务器端validation重用 为客户端validation,可以使用本答案中描述的Struts2-jQuery插件 。

BTW,HTML5(带有后备)和客户端的基本jQueryvalidation应该足够了。

把真正的努力放在服务器端,然后如果你仍然有时间和预算,增强客户端。