带编辑器框架的GWT验证器

use*_*433 6 validation gwt editor

有没有人意识到编辑器和jsr 303验证如何与GWT 2.3一起工作?验证API已添加到gwt sdk.但我无法使用编辑器框架验证实体.无论我做什么,都不会从客户端或服务器端抛出错误.

这是一段代码:

public class P {

  public P() {}

  @Size(min=4)
  private String name;

  public void setName(String name) {
    this.name = name;
  }

  public String getName() {
    return name;
  }

}
Run Code Online (Sandbox Code Playgroud)

PEditor

public class PEditor extends Composite implements Editor<P> {

  private static PEditorUiBinder uiBinder = GWT.create(PEditorUiBinder.class);

  interface PEditorUiBinder extends UiBinder<Widget, PEditor> {}

  @UiField
  TextBox name;

  public PEditor() {
    initWidget(uiBinder.createAndBindUi(this));
  }

}
Run Code Online (Sandbox Code Playgroud)
  PEditor pEditor;
  interface Driver extends SimpleBeanEditorDriver<P, PEditor> {}

  Driver driver = GWT.<Driver> create(Driver.class);

  public void onModuleLoad() {

    pEditor = new PEditor();
    driver.initialize(pEditor);
    P p = new P();
    driver.edit(p);
    pEditor.name.setText("G");
    driver.flush();

    if(driver.hasErrors()) {
        List<EditorError> errors = driver.getErrors();

        for (EditorError error : errors) {
          System.out.println(error.getMessage());

        }

    }
  }
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助

Col*_*rth 2

验证 API,至少从 2.3 开始,不会为您构建客户端代码 \xe2\x80\x93 它是一个可以集成在服务器上的工具,使您的服务器在某些情况下吐出错误。

\n\n

调用EditorDriver.hasErrors()只是检查是否有代码告诉本地代表是否有错误 \xe2\x80\x93 客户端验证可以通过此实现。

\n\n

现在最自动的情况是使用 RequestFactory 时 - 如果您的服务器类路径上有 javax.validation jar(api 和源)以及验证库(hibernate-validator 和 apache 的 bval 是两个这样的库),则接收器回调将被onViolation调用。

\n\n

使用 RequestFactory 从服务器获取违规行为RequestFactoryEditorDriver后,可以使用HasEditorErrors编辑器实例和包装器(如 )将错误推送到 UI ValueBoxEditorDecorator,或者只是通过某种机制(警报、横幅、调试)通知用户sys.out.println 等)何时onViolation被调用。

\n\n

如果使用 RPC,您可以自行运行服务器验证,并(从 2.3 开始)调用验证过程中在服务器上生成的对象driver.setConstraintViolationsConstraintViolation

\n