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)类和字段来描述它们的有效性规则.
在客户端,要在项目中使用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)
正确设置它有点工作,但它完美无缺.
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)