我正在使用Freemarker宏来管理两张地图的内容。
<#macro MACRO_NAME v>
<#nested v.val, v.msg>
</#macro>
水果地图的结构如下
地图(“水果” - &gt;地图(“val”,地图(“香蕉” - &gt;“黄色”,“橙色” - &gt;“橙色”),“msg” - &gt; null))
另一张地图,动物,看起来像这样
地图(“动物” - &gt;地图(“昆虫” - &gt;地图(“蝴蝶” - &gt;地图(“val” - &gt;地图(“Hasora anura” - &gt;“蓝色”,Hasora badra - &gt;“黄色”),“msg” - &gt; null))))
如果val为null,则可以,因为我已经检查了我的Freemarker代码。如果fruits.val为null,则以下代码将输出false,false(正确的行为)
${fruits.val???c}
<@MACRO_NAME fruits; fu, fuMsg>
${fu???c}
</@MACRO_NAME>
${animals.insects.butterflies.val???c}
<@MACRO_NAME animals.insects.butterflies; butterflies, buMsg>
${butterflies???c}
</@MACRO_NAME>
但我的问题是,如果animals.insects.butterflies.val为null,则输出false,true,但它也应该为false,也是false。
我不知道为什么会这样。
答案 0 :(得分:0)
我认为这是一种非常奇怪的行为
答案是:永远不要将循环变量命名为地图密钥。
&lt; @MACRO_NAME animals.insects.butterflies; bu,buMsg&gt;代替 &lt; @MACRO_NAME animals.insects.butterflies;蝴蝶,buMsg&gt;会工作......
这只是一个命名问题。