如何在Thymeleaf中有条件地显示图像?

时间:2018-04-17 14:01:45

标签: java html spring thymeleaf

我有一个返回ReponseEntity<byte[]>图像的控制器,我可以使用以下标记显示它:

<img th:src="@{'./my-files/main-logo'}"

我还可以使用此标记显示/ img /文件夹中的图像:

<img th:src="@{/img/default-logo.png}"

我希望在数据库存在时显示数据库,如果ResponseEntity为空,则显示文件夹中的图像。

我尝试了各种三元条件,但没有一个有效。 有什么建议吗?

3 个答案:

答案 0 :(得分:0)

尝试使用th:if="${...}"标记中的<img />属性。

您可以尝试以编程方式调用返回图像的方法(例如nameOfTheImageController.getImage(...)),并在模型中添加一个布尔值,表示图像是否为空。

然后,您可以在<img>的{​​{1}}中添加该布尔变量。

<强>更新

如评论中所述 HTML, Thymeleaf - displaying an image conditionally,您应将th:if标记包含在<img>内,并将<div>属性改为th:if标记。

答案 1 :(得分:0)

在我看来,如果没有主徽标,您应该更改/my-files/main-logo控制器以返回img/default-logo.png作为ResponseEntity<byte[]>,而不是更改图像的src。这样你就可以保留你的图片标签:

<img th:src="@{'./my-files/main-logo'}" />

如果您不想这样做,那么是的,您必须向控制器添加一些内容,告诉您是否有主徽标。像这样的东西:

<img th:if="${has_logo}" th:src="@{'./my-files/main-logo'}" />
<img th:unless="${has_logo}" th:src="@{/img/default-logo.png}" />

答案 2 :(得分:0)

请使用以下语法。当响应为null时,在控制器中添加模型属性hasImageInDatabase。然后从百里香使用以下语法。

<img th:src="${(hasImageInDatabase ?: '/my-files/main-logo': '/img/default-logo.png'}"/>