我正在将我的Spring MVC应用程序从JSP页面重写为Thymeleaf模板。然而,我遇到了以下问题。
当我使用具有不同类型结果的三元运算符,即java.lang.String
和java.lang.Integer
时,如果三元运算符中的条件未满足,则字符串始终显示为0
。< / p>
<p th:text="#{free_transfers} + ': ' + (${i ne T(java.lang.Integer).MAX_VALUE}
? ${i} : '∞')">Cumulated free transfers: ∞</p>
然而,生成的HTML
<p>Free transfers: 0</p>
如果i
等于Integer.MAX_VALUE
。
起初我认为这是因为第二个参数的类型为int
,所以我明确地将转换添加到了字符串。
<p th:text="#{free_transfers} + ': ' + (${i ne T(java.lang.Integer).MAX_VALUE}
? ${#strings.toString(i)} : '∞')">Cumulated free transfers: ∞</p>
然而,这确实改变了任何事情,结果仍然是
<p>Free transfers: 0</p>
有没有人知道如何达到预期的结果
<p>Free transfers: ∞</p>
我也试过这些但没有成功。
|#{free_transfers}: ${i ne T(Integer).MAX_VALUE ? #strings.toString(i) : "∞"}|
|#{free_transfers}: ${i ne T(Integer).MAX_VALUE ? i : "∞"}|
答案 0 :(得分:1)
它应该在一个${}
表达式中,您可能不需要toString
只需使用i
${i ne T(java.lang.Integer).MAX_VALUE ? i : '∞'}
答案 1 :(得分:1)
开头有一个问题&#34; +&#34;签署和&#34;:&#34;标志。这个有效:
<p th:text="'Free transfers :'+ (${i ne T(java.lang.Integer).MAX_VALUE}
? ${i} : '∞')">Cumulated free transfers: ∞</p>
答案 2 :(得分:0)
问题实际上是在提供i
变量值的部分。而不是Integer.MAX_VALUE
提供0
,所以难怪它显示为0
。