0

GWT 的 AbstractCell 允许您创建自定义单元格,包括在单元格中呈现图像的能力。有没有办法通过设置它的 URL 属性来呈现图像有一个与之关联的错误处理程序(在图像资源不可用或加载有问题的情况下采取措施)?在测试图像属性时正确呈现,但似乎没有包含错误处理程序。

这是我尝试使用的示例代码:

new AbstractCell<String>() {
  @Override
  public void render (Context context, String value, final SafeHtmlBuilder sb) {
    final Image testImage = new Image();
    testImage.addErrorHandler(new ErrorHandler() {
      @Override
      public void onError(ErrorEvent event) {
        // image SRC failed to load so pick a different image and set the tool tip
        testImage.setResource(images.errorLoading()); // from an image bundle
        testImage.setTitle("Image Load Failed");
      }
    });
    // the value passed in is the image src
    testImage.setUrl(value); 
    sb.append(SafeHtmlUtils.fromTrustedString(testImage.toString()));
 }

我认为问题出在testImage.toString(). 要实现 AbstractCell,您必须附加到 SafeHtmlBuilder。在图像上使用该toString()方法时,图像 URL 设置正确,其他属性设置正确,但错误处理程序不包含在toString()方法中(据我所知)。还有其他方法可以解决这个问题吗?

4

1 回答 1

1

testImage.toString()方法创建一个在单元格中呈现的简单 HTML 字符串。此 HTML 中将没有处理程序。

您可以在方法之外将 URL 设置为您的 testImage render()。让浏览器有时间加载图像(您可能必须使用调度程序)。然后你刷新/绘制你的 Cell 小部件。不过,我不确定用户是否愿意在所有图像加载之前出现延迟。

考虑改用 ImageLoadingCell。

于 2013-01-21T16:42:14.870 回答