我正在开发一个带有 Spring 后端的 GWT 应用程序,该后端使用 JSR 303 验证。该应用程序可以离线并使用浏览器 HTML5/Gears 数据库。

实施客户端验证的最佳方法是什么?到目前为止我已经找到了 gwt-validation 框架(http://code.google.com/p/gwt-validation/)但它似乎不再活跃。

谢谢!

更新:

有一个新的 GWT 官方项目来支持 JSR 303 Bean Validation (链接在这里)。在我看来,一旦项目足够成熟,这就是要走的路。

有帮助吗?

解决方案

我们的验证框架是客户端和服务器端数据输入验证框架。其作用是确保从客户端传递到服务器的数据符合业务规则。

验证框架使用 GWT Validation 项目,该项目实现“JSR 303:Bean 验证”规范。

这个想法是用 JSR303 注释来装饰数据传输对象 (DTO) 类和字段,以描述其有效性规则。

  1. 每个数据传输对象必须用其自己的验证注释进行修饰。
  2. 每个服务器端服务实现必须验证从客户端接收的数据传输对象。

在客户端,要在项目中使用 GWT-Validation,您需要将(以及类路径上的 jar 一起)添加到 GWT 模块 xml 文件中

<inherits name="com.google.gwt.validation.Validation" />

确保 DTO 实现 com.google.gwt.validation.client.interfaces.IValidatable

在客户端使用时进行验证

com.google.gwt.validation.client.interfaces.IValidator.validateProperty((T) model, propertyName);

在服务器端使用

com.google.gwt.validation.server.ServerValidator

正确设置它需要一些工作,但它可以完美地工作。

其他提示

2.5 GWT有一个新的特征只是为了这样的: https://developers.google.com/web-toolkit/doc/latest/DevGuideValidation

它使用Hibernate验证。

1),您将需要扩展AbstractGwtValidatorFactory和应用例如你的bean :

public final class SampleValidatorFactory extends AbstractGwtValidatorFactory {

  /**
   * Validator marker for the Validation Sample project. Only the classes and groups listed
   * in the {@link GwtValidation} annotation can be validated.
   */
  @GwtValidation(Person.class)
  public interface GwtValidator extends Validator {
  }

  @Override
  public AbstractGwtValidator createValidator() {
    return GWT.create(GwtValidator.class);
  }
}

2)然后添加到你的gwt.xml:

<inherits name="org.hibernate.validator.HibernateValidator" />
<replace-with
  class="yourpackage.SampleValidatorFactory">
  <when-type-is class="javax.validation.ValidatorFactory" />
</replace-with>

3)验证豆

Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
Set<ConstraintViolation<Person>> violations = validator.validate(person);

我还没有使用过,但GWT 2.1包括一些验证支持。

检查陈列柜例如

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top