图片从Chrome中的Vaadin网格中消失

时间:2018-04-19 11:20:38

标签: google-chrome vaadin vaadin-grid

我正在创建一个基于Vaadin的监控应用程序,我使用Grid组件为我正在监控的每个网络节点显示一行。每行显示节点名称,状态文本和状态图像,对应于节点是否为" OK","警告"或"错误"。

要显示状态图像,我使用的是componentColumn,它填充了与节点状态对应的Image对象。后端系统将从节点检索更新的状态,如果状态已更改,则该节点的Grid DataProvider上的刷新将更新文本和图像。

我的问题是,在Chrome中查看应用程序时,图像不会显示。刷新时只会绘制几张图片,过了一会儿,当背景推送机制更新了图片时,所有图片都消失了。这似乎不适用于Firefox。

网格组件:

grid.addComponentColumn(node -> {
if(node.isError()) {
    return new Image(null,new ClassResource("/img/error.png"));
}
else if(node.isWarning()) {
    return new Image(null,new ClassResource("/img/warning.png"));
}
else{
    return new Image(null,new ClassResource("/img/ok.png"));
}
})

刷新节点时:

dataProvider.refreshItem(node);

在Firefox的网络检查器中,我们偶尔会得到:

com.vaadin.client.ui.AbstractComponentConnector
SEVERE: Widget is still attached to the DOM after the connector (ImageConnector (11363)) has been unregistered. Widget was removed.

但图像仍然可见。在Chrome中我们偶尔会得到:

Failed to load resource: the server responded with a status of 404 ()http://192.168.28.12:8090/vaadinServlet/APP/connector/3/55643/source/ok.png

尝试转而使用ImageRenderer

grid.addColumn(
                node -> getThemeResource(node.isError(),node.isWarning()),
                new ImageRenderer<>()
        );

getThemeResource:

private ThemeResource getThemeResource(boolean isError, boolean isWarning) {
    if(isError) {
        return new ThemeResource("img/error.png"));
    }
    else if(isWarning) {
        return new ThemeResource("img/warning.png"));
    }
    else
        return new ThemeResource("img/ok.png"));
    }
}

由于我使用Vaadin的Spring Boot并且我的主题是标准的Valo主题,我将图像放在

MYAPP / SRC /主/资源/ VAADIN /主题/ VALO / IMG

运行时我没有收到任何错误,但图片没有显示在我的网格中。但是,在Chrome浏览器网络监视器中,我可以看到图像是从http://localhost:8090/VAADIN/themes/valo/img/ok.png

下载的

0 个答案:

没有答案