Freemarker"期望一个哈希值,但这被评估为一个字符串"

时间:2014-11-20 14:37:47

标签: freemarker

我正在使用Freemarker作为OpenOffice的附加功能来处理带有变量的文档。

因此,在这种情况下,我想要一个地址与联系人(如果有)或只是正常的联系方式(地址)。

[#function GetAdr]
    [#return (recipient)!"unbekannt" /]
[/#function] 


[#function GetAdrWithContact]
    [#return (GetAdr().contact)!"unbekannt" /]
[/#function]

[#if (GetAdrWithContact().adress)?? ]
[#if GetAdr().name??]${(GetAdr().name)?xml}<text:line-break />[/#if][@Adr GetAdrWithContact() /]
[#elseif (GetAdr().adress)?? ][@Adr GetAdr() /] [/#if]
[/#macro]

如果我想使用此代码,我会得到

  

预期哈希值,但这会计算为字符串

错误,仅适用于没有联系人的情况。只要有联系人,它就有效。

修改:我尝试使用GetAdrWithContact().adress)?has_content检查?is_string,但都没有效果。

1 个答案:

答案 0 :(得分:1)

!运算符(和?has_content)只有无句空值和缺失值,而不是类型错误。当你选择一个类型不同的默认值时,它确实很奇怪,当值不是null时。当然你应该使用{}(空哈希)作为默认值,或类似的东西。与真实事物类似的东西。然后GetAdr().name??,这样就不会出错。