我有一个使用Spring Boot和Thymeleaf的项目来渲染html页面。在其中一个页面中,我有以下html让Thymeleaf选择一个选项:
<select name="value" id="usersWarning">
<option value="0" th:text="#{button.disabled}">0</option>
<option value="0.5" th:selected="${warning} == 0.5">50%</option>
<option value="0.75" th:selected="${warning} == 0.75">75%</option>
<option value="0.9" th:selected="${warning} == 0.9">90%</option>
<option value="0.95" th:selected="${warning} == 0.95">95%</option>
</select>
如果警告等于0.5或0.75,Thymeleaf按预期工作,但如果警告等于0.9或0.95,则Thymeleaf不会将selected
属性添加到该选项。我添加了以下选项以查看我的警告值是否错误:
<option th:text="${warning}"></option>
但在每种情况下,Thymeleaf都能正确显示0.9或0.95。
感谢您的帮助。这让我在最后一小时疯狂。
答案 0 :(得分:1)
我建议尝试
${#numbers.formatDecimal(warning, 0, 2) == '0.95'}
这应该将数字格式化为带有两位小数的字符串,允许您对结果执行字符串比较。
这可能是必要的,因为浮点比较可能会有非常小的舍入错误,导致严格的比较失败。格式化为字符串会将数字四舍五入到更少的小数位,并消除可能导致比较失败的小错误。