我有一个返回ReponseEntity<byte[]>
图像的控制器,我可以使用以下标记显示它:
<img th:src="@{'./my-files/main-logo'}"
我还可以使用此标记显示/ img /文件夹中的图像:
<img th:src="@{/img/default-logo.png}"
我希望在数据库存在时显示数据库,如果ResponseEntity为空,则显示文件夹中的图像。
我尝试了各种三元条件,但没有一个有效。 有什么建议吗?
答案 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'}"/>