如何在 freemarker 模板中将字符串转换为数字

问题描述 投票:0回答:5

我想在 freemarker 中将字符串转换为数字。我想根据数字的值进行一些条件检查。 ?号码似乎不起作用。

有什么建议吗?

freemarker
5个回答
41
投票

抱歉,

?number
工作正常。我无法将转换后的数字与另一个数字进行比较。

这对我不起作用:

<#assign num = numString?number>

<#if num > 100>
</#if>

当我将(num > 100)括在括号内时,它起作用了:

<#if (num > 100)>
</#if>

由于比较不起作用,我假设转换没有发生。 我的错。


3
投票

在您的代码中,您使用闭括号,因此 freemarker 正在评估

<#if num >

你应该使用

<#if num gt 100>

本文档末尾有关 if 语句的内容对此进行了讨论 https://freemarker.apache.org/docs/ref_directive_if.html

这对某些人有效而不对其他人有效的原因是因为括号,这也在文档底部进行了解释


2
投票

我想你可以这样使用它:

string?eval


0
投票

使用以下代码

<#if num?string > 100?string>
</#if>

它对我有用。


0
投票

string?number
应该可以工作,但对格式有一些限制(请参阅文档),这有时会使其难以使用。

您可以使用

string?eval
文档)来让 Freemarker 评估变量的内容,如果确定是内容,则将其转换为数字。

所以:

<#if string?eval &gt 100>
"do one thing"
<#else> 
"something else"
</#if>

请注意,使用 >(大于)而不是 > 来防止与其他代码标签混淆(来源)

© www.soinside.com 2019 - 2024. All rights reserved.