Vaadin 10 Grid 添加自定义图片图标

Vaadin 10 Grid add custom image icon

我正在使用 Vaadin 10 (Flow) Grid 将数据流式传输到新行,并且我正在尝试向我的 TemplateRenderer 添加自定义图像图标。

我有这样的 TemplateRenderer 设置:

TemplateRenderer<TradeUni> sizee = TemplateRenderer.<TradeUni>
            of("<div class$=\"[[item.class]]\">[[item.size]]</div>")
            .withProperty("class", cssClassProvider)
            .withProperty("size", TradeUni::getSize);

它在网格单元格中正确显示我的数字,如下所示:

我想在同一个单元格内渲染我的图像,在数字的左侧。

这是我(非常粗糙)尝试使用 html 导入它的尝试:

TemplateRenderer<TradeUni> sizee = TemplateRenderer.<TradeUni>
            of("<div class$=\"[[item.class]]\"><img src=\"i.imgur.com/3LQBglR.png\">[[item.size]]</div>")
            .withProperty("class", cssClassProvider)
            .withProperty("size", TradeUni::getSize);

哪个给我这个:

我认为我可能必须将图像和数字包装到一个 HorizontalLayout 中,图像是一个单独的组件 - 我想我可以处理,但我不确定如何进行实际渲染的图像。我可能可以简单地使用内部 Vaadin 图标集来完成它,但我需要使用我自己的小图像..我将要使用的所有图标都将等于或小于 25 x 25 像素。

在此先感谢您!

我认为您的方向是正确的,但是有一个小细节给您带来了麻烦。 URL i.imgur.com/3LQBglR.png 没有定义协议,这意味着整个字符串将被视为相对于托管页面位置的路径。因此,它将尝试在您自己的服务器上名为 i.imgur.com 的目录中查找文件。

要解决此问题,您还需要在图像 URL 中包含协议,即 https://i.imgur.com/3LQBglR.png

我还可以就如何使代码更易于阅读提供一个小建议。 HTML 还支持使用 ' 来包含属性值。使用 Java 字符串更方便,因为您不需要使用 \ 来转义 ' 字符。因此,您的模板字符串可以是 "<div class$='[[item.class]]'><img src='https://i.imgur.com/3LQBglR.png'>[[item.size]]</div>".