Проверка GWT, которая может изменить стиль поля - PullRequest
0 голосов
/ 26 января 2012

Я ищу библиотеку проверки для GWT, которая может изменить стиль виджета при ошибке.

  1. Я не нашел его в GWT-валидации (может быть, я что-то пропустил>.
  2. Я нашел фреймворк с функциональностью GWT-VL (http://gwt -vl.sourceforge.net), но он не работает с 2009 года (чистая документация, не работает Maven Repo).

Существуют ли еще какие-либо пригодные для GWT платформы проверки с такой функциональностью?

Ответы [ 2 ]

1 голос
/ 27 января 2012

Вы можете использовать GWT Bean Validation, который является частью GWT 2.4 и работает нормально, хотя все еще находится в экспериментальном состоянии (см. http://code.google.com/p/google-web-toolkit/wiki/BeanValidation). GWT Bean Validation поддерживает аннотации JSR303. Это означает, что вы можете определить ограничения Ваши объекты передачи данных (DTO). Мы используем его вместе с GWT RequestFactory и GWT Editor Framework.

Теперь, если вы хотите изменить стиль виджета, вы можете реализовать что-то похожее на ValueBoxEditorDecorator. Вот пример того, как вы можете написать такой декоратор для вашего виджета и добавить класс css (как предложил Алекс):

public class MyWidgetDecorator<T> extends Composite implements
    HasEditorErrors<T>, IsEditor<ValueBoxEditor<T>> {

  // ...

  @UiField
  SimplePanel container;

  @UiField
  DivElement errorLabel;

  // ...

  /**
   * Sets the widget that is to be decorated. 
   */
  @UiChild(limit = 1, tagname = "content")
  public void setContent(ValueBoxBase<T> widget) {
    container.add(widget);

    // ... if using the editor framework, initialize the widget as editor
  }

  public void showErrors(List<EditorError> errors) {
    StringBuilder sb = new StringBuilder();
    for (EditorError error : errors) {
      if (error.getEditor().equals(editor)) {
        sb.append("\n").append(error.getMessage());
      }
    }

    if (sb.length() == 0) {
      errorLabel.setInnerText("");
      errorLabel.getStyle().setDisplay(Display.NONE);

      if (container.getWidget() != null) {
        container.getWidget().removeStyleName("violation"); // remove css class on widget
      }
      return;
    }

    errorLabel.setInnerText(sb.substring(1));
    errorLabel.getStyle().setDisplay(Display.INLINE_BLOCK);

    if (container.getWidget() != null) {
      container.getWidget().addStyleName("violation"); // add css class on widget
    }
  }
}

В методе showErrors(...) класс CSS, называемый «проверка», добавляется к виджету (например, текстовое поле). В классе css вы можете определить красную рамку для виджета, чтобы проиллюстрировать, например, неверный ввод.

Кстати, хорошее объяснение того, как использовать GWT Editor Framework , можно найти в этом ответе .

0 голосов
/ 26 января 2012

Хммм ... Не совсем уверен, что вы имеете в виду, но почему бы не определить новый класс css для ваших виджетов, специально предназначенный для ошибок, а затем применить этот стиль к виджету после сбоя проверки?Вы уверены, что для этого вам нужен «фреймворк»?

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