Проверка входных данных GWT CellTable

Я хотел бы реализовать что-то похожее на демонстрационный пример Cell Validation, который можно найти здесь.

http://gwt.googleusercontent.com/samples/Showcase/Showcase.html#!CwCellValidation

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

public ValidatableInputCell(String errorMessage) {
  super("change");
  if (template == null) {
    template = GWT.create(Template.class);
  }
  this.errorMessage = SimpleHtmlSanitizer.sanitizeHtml(errorMessage);
}

SafeStyles safeColor = SafeStylesUtils.fromTrustedString("color: " + color + ";");
sb.append(template.input(pendingValue != null ? pendingValue : value, safeColor));

if (invalid) {
  sb.appendHtmlConstant(" <span style='color:red;'>");
  sb.append(errorMessage);
  sb.appendHtmlConstant("</span>");
}

После поиска в Интернете я нашел несколько примеров того, каким должно быть определение переменной шаблона, и придумал

interface Template extends SafeHtmlTemplates {
  @Template("<input type=\"text\" value=\"{0}\" tabindex=\"-1\" size=\"{1}\"></input>")
  SafeHtml input(String value, SafeHtml safeStyles);
}
private Template template;

с добавленным выше кодом нет предупреждения компилятора, однако, когда код выполняется, я получаю эту ошибку

SafeStyles, используемые в контексте атрибута, отличного от CSS. Вы хотели вместо этого использовать java.lang.String или SafeHtml?

Любые идеи о том, как решить эту проблему?


person lufthansa747    schedule 15.07.2013    source источник


Ответы (1)


В определении шаблона, которое вы ищете, отсутствует аннотация @ShowcaseSource, поэтому вы не видите его на вкладке исходного кода в образце проверки.

В любом случае, здесь исходный код. А шаблон такой:

interface Template extends SafeHtmlTemplates {
  @Template("<input type=\"text\" value=\"{0}\" style=\"{1}\" tabindex=\"-1\"/>")
  SafeHtml input(String value, SafeStyles color);
}

Ошибка, которую вы видите, связана с тем, что вы используете элемент SafeStyle (на который ссылается {1}) в качестве значения атрибута size (вместо style).

person Andrea Boscolo    schedule 15.07.2013