Freemarker使用Map值和宏

时间:2015-07-28 14:46:07

标签: macros maps freemarker

我正在使用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。

我不知道为什么会这样。

1 个答案:

答案 0 :(得分:0)

我认为这是一种非常奇怪的行为

答案是:永远不要将循环变量命名为地图密钥。

&lt; @MACRO_NAME animals.insects.butterflies; bu,buMsg&gt;代替 &lt; @MACRO_NAME animals.insects.butterflies;蝴蝶,buMsg&gt;会工作......

这只是一个命名问题。