GWT CellTable输入验证

时间:2013-07-15 16:47:50

标签: java validation gwt gwt-validation

我想实现类似于Cell Validation展示示例的内容,可以在这里找到

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

在查看代码并尝试实现它之后,模板似乎缺少类/变量deffinition。它出现在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吗?

有关如何解决此问题的任何想法?

1 个答案:

答案 0 :(得分:1)

您要查找的模板定义错过了@ShowcaseSource注释,因此您无法在验证示例的源选项卡中看到它。

无论如何,here是原始代码。模板是:

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

您看到的错误是因为您使用SafeStyle元素(由{1}引用)作为size属性的值(而不是style)。< / p>