2009-11-18 53 views
3

我们目前正在寻找一个java框架,它在服务器端轻松进行验证,客户端,Spring,Hibernate,Play是我们正在搜索的框架选择,我们使用基于注释的开发,并且此框架将确定我们的javascript在客户端和服务器端的验证操作中,哪个更好的架构(体系结构)?哪个java web框架可供客户端和服务器端验证选择?

回答

4

客户端验证(假设“客户端”,你的意思是基于JavaScript的)是一个神话。它使一个更好的用户界面 - 没问题 - 但它不能被称为“验证”,因为什么来自客户端不能被认为有效;直到它在服务器上被验证。

服务器端验证是不是一个整体件或者 - 至少有3个分量到它:

  1. 数据存储约束(例如不为空,最大长度,唯一性,参照完整性,等等在数据库级别指定)。
  2. 域模型验证(确保你的实体是有效的)
  3. 客户端输入验证(UI,并以较小的程度上,基于API - 验证)

很可能从#2派生#1 - Hibernate Validatior做假设你使用Hibernate作为你的JPA提供者,这是一个出色的工作。

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

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

-1

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

+0

需要更多信息 – Timeless

2

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

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

5

新的Spring 3(它在RC2,很快就会定稿)在与Hibernate匹配时有很多好处可以帮助你的事业。绑定用户输入后验证模型是很常见的。 Spring 3为使用JSR-303的声明性验证提供支持。如果您的类路径中存在JSR-303提供程序(如Hibernate Validator),则会自动启用此支持。当启用时,可以简单地通过注释一个控制器方法参数与@Valid注释触发验证:

@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等。我已经在Spring中广泛使用了Extjs的小部件,缺乏灵活性,期望Jquery和其他任何事情的相同。还有Spring-js,您可以查看并评估其用例的优点。

+0

你可以给一些更多的细节,我创建了具有名称,邮件,文本字段的表单对象类然后我创建formcontroller使用有效的注释,我couldnt理解如何实现,并与形式使用它。 –

+0

@Burak:你应该得到你需要的东西http://static.springsource.org/spring/docs/3.0.0.RC2/spring-framework-reference/html/ch05s07.html –

0

你也可以用ajaxical酱找一个JSF组件库。然而,他们大多只做服务器端验证,但使用ajax。例子是RichFaces(也包括在Seam),PrimeFacesIceFaces