我的百万富翁页面中有一个开关块,我根据用户的声誉分数显示图像:
<h1>
<span th:text="#{user.reputation} + ${reputation}">Reputation</span>
</h1>
<div th:if="${reputation lt 0}">
<img th:src="@{/css/img/troll.png}"/>
</div>
<div th:if="${reputation} == 0">
<img th:src="@{/css/img/smeagol.jpg}"/>
</div>
<div th:if="${reputation gt 0} and ${reputation le 5}">
<img th:src="@{/css/img/samwise.png}"/>
</div>
<div th:if="${reputation gt 5} and ${reputation le 15}">
<img th:src="@{/css/img/frodo.png}"/>
</div>
<div th:if="${reputation gt 15}">
<img th:src="@{/css/img/gandalf.jpg}"/>
</div>
此语句总是返回smeagol(声誉为0),尽管此用户的声誉为7:example
修改
我错了,图片显示是一条流氓行:
<!--<img th:src="@{/css/img/smeagol.jpg}"/>-->
但我评论了它。现在没有图像显示。
EDIT2:
改变了我的比较器(见原帖),现在我收到以下错误:
The value of attribute "th:case" associated with an element type "div" must not contain the '<' character.
EDIT3:
立即投放,将原始帖子更新为工作代码
答案 0 :(得分:1)
更改
<div th:case="0">
<img th:src="@{/css/img/smeagol.jpg}"/>
</div>
到
<div th:case="${reputation == 0}">
<img th:src="@{/css/img/smeagol.jpg}"/>
</div>
答案 1 :(得分:1)
根据the documentation,Thymeleaf的switch
声明就像Java一样 - 而且这个例子暗示了相同的。
换句话说:你做不到
<th:block th:switch="${reputation}">
<div th:case="${reputation} < 0">
[...]
但需要做
<th:block th:switch="${reputation}">
<div th:case="0">
[...]
这不是你想要的。
相反,您必须使用th:if
,例如:
<div th:if="${reputation} < 0">
<img th:src="@{/css/img/troll.png}"/>
</div>