2010-11-11 66 views
0

在GWT中验证用户输入的最佳方法是什么?是否有内置的输入验证支持?还是有任何外部框架来做到这一点?考虑到我在GWT中使用hibernate?在GWT中验证用户输入?

感谢

+2

我希望你问这个问题只是为了用户反馈。只是一个友好的提醒,所有的实际验证**必须在服务器端完成。客户端检查,以便您可以及时向用户提供反馈是很好的,但他们并没有删除在服务器上检查*所有*的需要。 – 2010-11-11 09:46:34

+0

@ Andrezej Doyle - 是否可以在客户端禁用Javascript? – Sid 2010-11-11 10:41:01

+2

@SidCool用户可以修改发送到服务器的任何呼叫,这就是为什么您不应该依赖客户端验证来保持数据一致性和安全性的原因。 – Knubo 2010-11-11 11:03:59

回答

1

可以存储在一个“共享”包中的类写静态验证检查程序。然后,您可以在客户端和服务器端使用相同的代码。

0

既然你还没有得到一个好的答案,我想分享我的意见与我已经看到GWT的验证框架。

事情与框架是,他们往往尽力去完成两件事情:

  • 他们想成为非常普遍的。
  • 他们希望不侵入你的代码。

这有时会成功,但大多数时候他们不会。编写这样一个框架会带来成本,而这个成本就是你作为该框架的用户支付的成本。

在我看来,验证应该很简单。下面是我使用一些代码,我放在一起是如何解决验证的例子:

MasterValidator masterValidator = new MasterValidator(); 

    masterValidator.mandatory(messages.required_field(), lastnameBox, firstnameBox, genderBox); 

    if (birthdateRequired) { 
     masterValidator.mandatory(messages.required_field(), birthdateBox); 
    } 

    masterValidator.date(messages.date_format(), birthdateBox); 

    masterValidator.email(messages.invalid_email(), emailBox); 

    return masterValidator.validateStatus(); 

这里每一个输入框,从我的文本字段(或其他输入类型)继承和这些领域有一个错误的标签,这将是如果验证不成功则设置。

我并不是说这是完美的,但它可以简单地完成工作。如果你想受到启发/拿我的一些代码,那么请做。该代码是托管在谷歌代码一个GPL2许可的项目中使用:

http://code.google.com/p/accountclient/source/browse/#svn/trunk/RegnskapClient/src/no/knubo/accounting/client/validation

它采用客户端/ UI为好。