ZK替换图片内容

ZK Replace Image Content

我在 zul 页面上有一张图片,我需要使用控制器替换它。

我试过使用 Image.setContent(bufferedImage) 和 Image.setSrc(base64EncodedString) 这些都不会更新显示的图像。

我也试过在设置来源和内容后调用 Image.invalidate(),这也不会更新图像。

我在 .zul 上的图片标签如下所示

<image id="imgStreaming" width="200" height="200" style="display:inline-block; border:1px solid #b9b9b9; border-radius:0px; color:#ccc; min-width:200px; min-height:200px;" />

控制器中的代码如下所示

JsonArray ja = json.getAsJsonObject().get("A").getAsJsonArray();                    
BufferedImage bufferImg = decodeToImage(ja.get(0).toString());                    
imgStreaming.setContent(bufferImg);
imgStreamingFingerprint.invalidate();

decodeToImage 方法只是获取 base64 字符串并将其转换回 BufferedImage

ZK图像内容包含AImage对象。因此,您需要先创建此对象,然后才能更改图像元素的内容。 请参阅下面的示例

<image content="@bind(vm.currentImage)"/>

URL url = new URL(IMAGE_URL);
currentImage = new AImage(url);