0

我想实现类似于 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;

添加上面的代码没有编译器警告但是当代码执行时我得到这个错误

在非 CSS 属性上下文中使用的 SafeStyles。您的意思是改用 java.lang.String 或 SafeHtml 吗?

关于如何解决这个问题的任何想法?

4

1 回答 1

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)。

于 2013-07-15T20:59:34.877 回答