我正在开发一个使用JSR 303验证的Spring后端的GWT应用程序。该应用程序可以脱机并使用浏览器HTML5/Gears数据库。GWT JSR 303客户端验证
实现客户端验证的最佳方式是什么?到目前为止,我已经找到gwt验证框架(http://code.google.com/p/gwt-validation/),但它似乎不再活跃。
谢谢!
UPDATE:
有一个新的GWT的官方项目,以支持JSR 303 Bean验证(link here)。一旦项目足够成熟,这就是IMO的方式。
我正在开发一个使用JSR 303验证的Spring后端的GWT应用程序。该应用程序可以脱机并使用浏览器HTML5/Gears数据库。GWT JSR 303客户端验证
实现客户端验证的最佳方式是什么?到目前为止,我已经找到gwt验证框架(http://code.google.com/p/gwt-validation/),但它似乎不再活跃。
谢谢!
UPDATE:
有一个新的GWT的官方项目,以支持JSR 303 Bean验证(link here)。一旦项目足够成熟,这就是IMO的方式。
我们的验证框架是一个客户端和服务器端数据输入验证框架。它的作用是确保从客户端传递到服务器的数据符合业务规则。
验证框架使用实现“JSR 303:Bean验证”规范的GWT验证项目。
这个想法是用JSR303注释来装饰数据传输对象(DTO)类和字段来描述它们的有效性规则。
在客户端,使用GWT验证在你的项目,你需要添加(与你的classpath的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
这是一个适当的设置,但它的工作完美的一点工作。
我还没有使用它,但GWT 2.1包括一些验证支持。
查看ShowCase example。
GWT 2.5拥有只为这一个新功能: 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)验证你的bean
Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
Set<ConstraintViolation<Person>> violations = validator.validate(person);
感谢您的回答卡洛斯。该示例显示了如何创建手动验证用户输入的自定义单元。我想要避免的是必须在客户端和服务器中两次写入验证。 – 2010-11-22 22:20:02
@Javier,如果您足够关心您的数据在任何地方进行验证的有效性,您绝对应该在服务器端进行验证。客户端验证只是一个很好的功能,可以节省用户的时间和精力。 – sarnold 2011-07-07 22:01:20
感谢您的指点,我会试试 – 2011-12-21 12:46:26