Java 关于FTL';s SimpleScalar 背景

Java 关于FTL';s SimpleScalar 背景,java,freemarker,Java,Freemarker,在我的ftl文件中,我有以下语句 <#if payout.paymentType.name == "StoreCredit"> 我花了一段时间才发现是这个导致了问题,然后我像这样修复了它 <#if payout.paymentType.name() == "StoreCredit"> 出于某种原因,我的印象是,SimpleScalar是一种数字。在谷歌搜索了一段时间后,我发现情况并非如此 问题: 为什么“StoreCredi

在我的
ftl
文件中,我有以下
语句

<#if payout.paymentType.name == "StoreCredit">
我花了一段时间才发现是这个
导致了问题,然后我像这样修复了它

<#if payout.paymentType.name() == "StoreCredit">

出于某种原因,我的印象是,
SimpleScalar
是一种数字。在谷歌搜索了一段时间后,我发现情况并非如此

问题: 为什么
“StoreCredit”
被视为
freemarker.template.SimpleScalar

这就是FTL表示字符串的方式吗

SimpleScalar
是否曾用于表示字符串以外的内容?或者这仅仅是一个用于其他用途的通用令牌。


<if payout.paymentType.name??>
    <#if payout.paymentType.name?string == "StoreCredit">
    </#if>
</#if>

是的,它用于表示Java
字符串,仅此而已

正如API文档(JavaDoc)所说,
SimpleScalar
是“TemplateScalarModel
接口的简单实现,
TemplateScalarModel
是“字符串”模板语言数据类型;与Java一样,是不可修改的UNICODE字符序列。(此接口的名称应为
TemplateStringModel
。误称是从旧时代继承的,当时这是FreeMarker中唯一的单值类型。)”。数字由
TemplateNumberModel
的实现表示


顺便说一句,FreeMarker 2.3.20的错误信息不那么晦涩。它讨论字符串、数字、布尔值等。
SimpleScalar
,这些都是免费标记用户不必担心的技术细节。

是的,它是用来表示Java
字符串的,仅此而已

正如API文档(JavaDoc)所说,
SimpleScalar
是“TemplateScalarModel
接口的简单实现,
TemplateScalarModel
是“字符串”模板语言数据类型;与Java一样,是不可修改的UNICODE字符序列。(此接口的名称应为
TemplateStringModel
。误称是从旧时代继承的,当时这是FreeMarker中唯一的单值类型。)”。数字由
TemplateNumberModel
的实现表示


顺便说一句,FreeMarker 2.3.20的错误信息不太神秘。它讨论字符串、数字、布尔值等。
SimpleScalar
这些技术细节是因果FreeMarker用户不必担心的。

为什么要花一些时间来找出是哪个
#如果
导致了问题?错误信息总是包含a行nd列编号,以及失败表达式的引号。如果没有,则会有东西将其删除…为什么要花一些时间来找出是哪个
#如果
导致问题?错误消息始终包含行号和列号,以及失败表达式的引号。如果没有,则会有东西将其删除…这个答案似乎是正确的不相关…它也会失败,因为
name
不是一个JavaBean属性(因为没有
getName()
),而是一个方法。如果不是,则
?字符串部分是多余的。这个答案似乎不相关…它也会失败,因为
name
不是JavaBean属性(因为没有
getName()
)但是一个方法。如果不是,则
?字符串
部分是多余的。
<if payout.paymentType.name??>
    <#if payout.paymentType.name?string == "StoreCredit">
    </#if>
</#if>