我正在使用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
,但都没有效果。
答案 0 :(得分:1)
!
运算符(和?has_content
)只有无句空值和缺失值,而不是类型错误。当你选择一个类型不同的默认值时,它确实很奇怪,当值不是null
时。当然你应该使用{}
(空哈希)作为默认值,或类似的东西。与真实事物类似的东西。然后GetAdr().name??
,这样就不会出错。