Проверка входных данных GWT CellTable
Я хотел бы реализовать нечто похожее на пример демонстрации Cell Validation, который можно найти здесь
http://gwt.googleusercontent.com/samples/Showcase/Showcase.html
После просмотра кода и попытки его реализации, кажется, отсутствует определение класса / переменной для шаблона. который появляется в коде в 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?
Есть идеи, как решить эту проблему?
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
).