GWT AbstractCell - 使用URL渲染图像并包含错误处理程序?

时间:2013-01-21 16:22:03

标签: image gwt grid

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()方法中(我能说得最好)。还有另一种方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

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

您可以在render()方法之外设置testImage的URL。给浏览器加载图像的时间(您可能必须使用Scheduler)。然后刷新/绘制Cell小部件。但是,我不确定用户是否会在所有图像加载之前都感到滞后。

请考虑使用ImageLoadingCell。