GWT JSR 303客户端验证

Jav*_*ero 13 validation gwt bean-validation

我正在开发一个使用JSR 303验证的Spring后端的GWT应用程序.应用程序可以脱机并使用浏览器HTML5/Gears数据库.

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

谢谢!

更新:

有一个新的GWT官方项目来支持JSR 303 Bean Validation(链接在这里).IMO这是项目成熟后的方法.

Fre*_*tte 13

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

验证框架使用GWT Validation项目,该项目实现了"JSR 303:Bean Validation"规范.

我们的想法是用JSR303注释装饰数据传输对象(DTO)类和字段来描述它们的有效性规则.

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

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

<inherits name="com.google.gwt.validation.Validation" />
Run Code Online (Sandbox Code Playgroud)

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

在客户端使用验证

com.google.gwt.validation.client.interfaces.IValidator.validateProperty((T) model, propertyName);
Run Code Online (Sandbox Code Playgroud)

在服务器端使用

com.google.gwt.validation.server.ServerValidator
Run Code Online (Sandbox Code Playgroud)

正确设置它有点工作,但它完美无缺.


rjd*_*olb 6

GWT 2.5为此提供了一项新功能:https: //developers.google.com/web-toolkit/doc/latest/DevGuideValidation

它使用Hibernate Validator.

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);
  }
}
Run Code Online (Sandbox Code Playgroud)

2)然后将其添加到您的gwt.xml:

<inherits name="org.hibernate.validator.HibernateValidator" />
<replace-with
  class="yourpackage.SampleValidatorFactory">
  <when-type-is class="javax.validation.ValidatorFactory" />
</replace-with>
Run Code Online (Sandbox Code Playgroud)

3)验证你的bean

Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
Set<ConstraintViolation<Person>> violations = validator.validate(person);
Run Code Online (Sandbox Code Playgroud)