Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image GWT AbstractCell-使用URL呈现图像并包含错误处理程序?_Image_Gwt_Grid - Fatal编程技术网

Image GWT AbstractCell-使用URL呈现图像并包含错误处理程序?

Image GWT AbstractCell-使用URL呈现图像并包含错误处理程序?,image,gwt,grid,Image,Gwt,Grid,GWT的AbstractCell允许您创建自定义单元格,包括在单元格中渲染图像的功能。有没有一种方法可以通过设置图像的URL属性来呈现图像,并且有一个与之关联的错误处理程序(在图像资源不可用或加载有问题时采取措施)?在测试图像属性时,正确渲染,但似乎没有包含错误处理程序 下面是我尝试使用的示例代码: new AbstractCell<String>() { @Override public void render (Context context, String value,

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()));
 }
newAbstractCell(){
@凌驾
公共void呈现(上下文上下文、字符串值、最终安全HtmlBuilder sb){
最终图像测试图像=新图像();
testImage.addErrorHandler(新的ErrorHandler(){
@凌驾
公共无效onError(错误事件){
//图像SRC加载失败,因此请选择其他图像并设置工具提示
testImage.setResource(images.errorLoading());//来自图像包
testImage.setTitle(“图像加载失败”);
}
});
//传入的值是图像src
testImage.setUrl(值);
sb.append(SafeHtmlUtils.fromTrustedString(testImage.toString());
}
我认为问题在于
testImage.toString()
。要实现AbstractCell,必须将其附加到SafeHtmlBuilder。在图像上使用
toString()
方法时,图像URL设置正确,其他属性设置正确,但
toString()中不包含错误处理程序
method(据我所知)。还有其他方法吗?

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

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


请考虑改用ImageLoadingCell。

我无法在render方法之外设置URL,因为抽象单元格正在插入网格中,传递到单元格中的字符串值表示图像URL(每行都是动态的)。我也看过ImageLoadingCell,但我不认为这在这种情况下对我有什么帮助(它最终要求我将图像作为捆绑包的一部分(在这种情况下不可能,因为图像是基于传入的URL每行加载的)。除非我遗漏了什么?您可以在render()之外设置URL)方法,但我建议使用ImageCell或ImageLoadingCell。这些单元格正是您想要做的:它们通过其URL显示图像(与ImageResourceCell不同)。然后,如果无法加载所需的图像,您可以覆盖单元格中的
onBrowserEvent
方法以显示错误图像/消息。通常,您不需要在网格的每一行中设置处理程序:您只需要覆盖单元格本身中的方法(即
getValue
update
onBrowserEvent
,等等)您能否提供一个示例,说明如何在
render()之外设置URL
method?正如我所说,单元格将进入网格,因此在构建网格之前,我不知道或无法访问图像URL。此外,我也找不到一个关于如何使用图像设置ImageLoadingCell并指定URL的好例子。我会添加
onBrowserEvent
方法,但找不到好的示例使用其中一个单元格而不是抽象单元格的方法。