【问题标题】:GWT Validator with Editor Framework带有编辑器框架的 GWT 验证器
【发布时间】:2011-08-24 02:57:00
【问题描述】:

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

这是一个代码sn-p:

public class P {

  public P() {}

  @Size(min=4)
  private String name;

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

  public String getName() {
    return name;
  }

}

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));
  }

}

  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());

        }

    }
  }

感谢您的帮助

【问题讨论】:

    标签: validation gwt editor


    【解决方案1】:

    至少从 2.3 开始,Validation API 不会为您构建客户端代码 - 它是一种可以集成在服务器上的工具,可以让您的服务器在某些情况下吐回错误。

    对EditorDriver.hasErrors() 的调用只是为了检查是否有任何代码告诉本地代表是否有错误——客户端验证可以通过它来实现。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-05
      • 1970-01-01
      • 1970-01-01
      • 2011-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多