哪个java Web框架可供客户端和服务器端验证选择?

时间:2009-11-18 18:45:54

标签: java spring frameworks java-ee

我们目前正在搜索一个java框架,它在服务器端轻松进行验证,客户端,Spring,Hibernate,Play都是我们正在搜索的框架选择,我们正在使用基于注释的开发,这个框架将决定我们的javascript选择。在客户端和服务器端的验证操作中哪个是更好的框架(架构)?

6 个答案:

答案 0 :(得分:5)

新的Spring 3(在RC2上,很快就会完成)有很多好东西可以帮助你在与Hibernate匹配时解决问题。在将用户输入绑定到模型之后验证模型是很常见的。 Spring 3为JSR-303的声明性验证提供支持。如果类路径中存在JSR-303提供程序(如Hibernate Validator),则会自动启用此支持。启用后,只需通过使用@Valid注释注释Controller方法参数即可触发验证:

@RequestMapping(value = "/appointments", method = RequestMethod.POST)
public String add(@Valid AppointmentForm form, BindingResult result) {
    ....
}

public class AppointmentForm {

    @NotNull @Future
    private Date date;
}

绑定传入的POST参数后,AppointmentForm将被验证;在这种情况下,要验证日期字段值不为空并且将来发生。

因此,这使得对您的域模型的验证非常简单,并且您可以自由地使用前端的任何Javascript库,无论是Jquery还是Extjs等。我已经使用Extjs的小部件广泛使用Spring而没有任何灵活性,我希望Jquery和其他任何事情都是一样的。还有Spring-js您可以查看并评估其用例的优点。

答案 1 :(得分:4)

客户端验证(假设“客户端”是指基于javascript的)是一个神话。它使一个更好的用户界面 - 毫无疑问 - 但它不能被称为“验证”,因为什么这是来自客户端不能假定有效;直到它在服务器上验证。

服务器端验证也不是单片 - 至少有3个组件:

  1. 数据存储限制(例如,在数据库级别指定的非空,最大长度,唯一性,参照完整性等)。
  2. 域模型验证(确保您的实体有效)
  3. 客户端输入验证(UI和(在较小程度上,基于API的验证)
  4. 这是可能的,从#2#获得1 - 那个假设你使用Hibernate作为JPA提供Hibernate Validatior做了出色的工作。

    也可以从#3派生客户端检查。如果你打算使用GWT然后使用由Jeff建议GWT VF是因为它是基于相同的规范(JSR-303)作为Hibernate验证一个不错的办法。如果您打算使用其他东西,编写从注释或基于XML的验证规则生成必要的scriptlet的代码是相当简单的。我过去为ExtJS控件做过。

    最大的问题是桥接#2和#3 - 相同的域实体可能由UI中的许多不同视图表示,每个视图都有自己的验证规则;所述验证规则可能以实体状态为条件并动态变化等等... AFAIK没有好办法自动完成它,除非你的UI是非常简单的1对1 CRUD类型。

答案 2 :(得分:2)

添加到ChssPly76,您可以直接在UI中使用您的Hibernate验证(或上一版本中的javax.validation)带注释的实体,如果您使用RichFaces,也会自动应用相同的验证规则。它有一个名为beanValidator的组件,它读取上述注释。

与GWT不同,RichFaces(和JSF)允许更多文档样式的Web页面,而不是应用程序样式。

答案 3 :(得分:1)

GWT Validation。它旨在桥接客户端和服务器端验证。

答案 4 :(得分:0)

您还可以查找带有ajaxical酱的JSF组件库。然而,他们大多只做服务器端验证,但使用ajax。示例为RichFaces(也包含在Seam),PrimeFacesIceFaces中。

答案 5 :(得分:-2)

我想说Spring框架是最好的。我们一直在使用Spring-Hibernate组合。