三元运算符 returns 0 代替字符串
Ternary operator returns 0 instead of character string
我正在将我的 Spring MVC 应用程序从 JSP 页面重写到 Thymeleaf 模板。但是,我遇到了以下问题。
当我使用具有不同类型结果的三元运算符时,即 java.lang.String
和 java.lang.Integer
如果不满足三元运算符中的条件,则字符串始终显示为 0
.
<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 : "∞"}|
它应该在一个 ${}
表达式中,你也可能不需要 toString
只需使用 i
${i ne T(java.lang.Integer).MAX_VALUE ? i : '∞'}
开头“+”号和“:”号的顺序有问题。这个有效:
<p th:text="'Free transfers :'+ (${i ne T(java.lang.Integer).MAX_VALUE}
? ${i} : '∞')">Cumulated free transfers: ∞</p>
问题实际上出在提供 i
变量值的部分。它提供了 0
而不是 Integer.MAX_VALUE
,所以难怪它显示为 0
。
我正在将我的 Spring MVC 应用程序从 JSP 页面重写到 Thymeleaf 模板。但是,我遇到了以下问题。
当我使用具有不同类型结果的三元运算符时,即 java.lang.String
和 java.lang.Integer
如果不满足三元运算符中的条件,则字符串始终显示为 0
.
<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 : "∞"}|
它应该在一个 ${}
表达式中,你也可能不需要 toString
只需使用 i
${i ne T(java.lang.Integer).MAX_VALUE ? i : '∞'}
开头“+”号和“:”号的顺序有问题。这个有效:
<p th:text="'Free transfers :'+ (${i ne T(java.lang.Integer).MAX_VALUE}
? ${i} : '∞')">Cumulated free transfers: ∞</p>
问题实际上出在提供 i
变量值的部分。它提供了 0
而不是 Integer.MAX_VALUE
,所以难怪它显示为 0
。