GWT Validator с платформой редактора - PullRequest
6 голосов
/ 12 мая 2011

Кто-нибудь понял, как редакторы и валидация 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;
  }

}

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

        }

    }
  }

Спасибо за вашу помощь

1 Ответ

2 голосов
/ 25 июля 2011

API проверки, по крайней мере, начиная с 2.3, не создает для вас код на стороне клиента - это инструмент, который может быть интегрирован на сервер, чтобы в некоторых случаях ваш сервер мог выплевывать ошибки.

Вызов EditorDriver.hasErrors() просто для проверки того, сообщил ли какой-либо код местным делегатам, если есть ошибки - с помощью этого можно выполнить проверку на стороне клиента.

Самым автоматическим случаем сейчас является использование RequestFactory - если у вас есть javax.validation jar (как api, так и source) на вашем пути к классам сервера, а также библиотека валидации (hibernate-validator и apache bval - две такие библиотеки) для обратного вызова получателя будет onViolation.

Поскольку RequestFactory используется для получения нарушений от сервера, RequestFactoryEditorDriver может затем использоваться для отправки ошибок в пользовательский интерфейс, хотя используется HasEditorErrors экземпляры редактора и оболочки, такие как ValueBoxEditorDecorator, или просто путем уведомления пользователь через некоторый механизм (оповещение, баннер, отладчик sys.out.println и т. д.), когда вызывается onViolation.

При использовании RPC вы можете запускать проверки сервера самостоятельно и (начиная с 2.3) вызывать driver.setConstraintViolations с объектами ConstraintViolation, сгенерированными на сервере из процесса проверки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...