我们目前正在寻找一个Java框架,该框架易于在服务器端和客户端进行验证,Spring,Hibernate,Play是我们正在搜索的框架选择,我们正在使用基于注释的开发,该框架也将决定我们的javascript选择在客户端和服务器端的验证操作中,哪种架构(架构上)更好?

最佳答案

客户端验证(假设您是指基于javascript的“客户端”)是一个神话。它使UI变得更好-没问题-但它不能被称为“验证”,因为不能假定来自客户端的任何都是有效的;直到在服务器上对其进行验证。

服务器端验证也不是单块的-至少有3个组成部分:

  • 数据存储约束(例如,在数据库级别指定的非null,最大长度,唯一性,参照完整性等)。
  • 域模型验证(确保您的实体有效)
  • 客户端输入验证(UI,以及在较小程度上基于API的验证)

  • 可以从#2派生出#1-Hibernate Validatior在假设您使用Hibernate作为JPA提供程序的情况下做得很好。

    也可以从#3派生客户端检查。如果您打算使用GWT,那么使用Jeff推荐的GWT VF是一个很好的方法,因为它基于与Hibernate Validator相同的规范(JSR-303)。如果您要使用其他内容,那么编写从注释或基于XML的验证规则生成必要脚本的代码相当简单。过去,我已经为ExtJS控件做到了。

    最大的问题是桥接#2和#3-同一域实体可能由UI中的许多不同视图表示,每个视图都有自己的验证规则;所述验证规则可能取决于实体状态,并且可能会动态更改,等等。AFAIK没有自动执行此验证的好方法,除非您的UI是非常简单的一对一CRUD类型。

    10-06 05:37
    查看更多