Freemarker-Macros:如何使用宏两次?

时间:2018-03-21 09:03:26

标签: freemarker

我目前正在处理一些合同,我的freemarker宏工作正常。但是现在我必须使用相同的宏两次并且我得到报告:期望一个哈希,但这被评估为一个数字 似乎同样的宏不能两次做同样的事情,我目前使用的宏是:

[#macro TeilbetragProzent]
[#assign gesamt = ((verkaufsauftrag.beteiligungGesamt)!"") /]
[#assign nominale = ((nominale.betrag)!"")/]
[#if (gesamt?string)!=""] 
[#assign prozent = ((nominale/gesamt)*100)/]
${(prozent)?string["0.##"]}
[#else]100
[/#if]
[/#macro]

我试着稍微改变一下:

[#macro TeilbetragProzent2]
[#assign gesamt2 = ((verkaufsauftrag.beteiligungGesamt)!"") /]
[#assign nominale2 = ((nominale2.betrag2)!"")/]
[#if (gesamt2?string)!=""] 
[#assign prozent2 = ((nominale2/gesamt2)*100)/]
${(prozent2)?string["0.##"]}
[#else]100
[/#if]
[/#macro]

仍然没有工作......我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

而不是宏中的问题,我相信你的问题在于第二个赋值指令:[#assign nominale = ((nominale.betrag)!"")/]。您正尝试将哈希变量betrag中的节点nominale的值(可能是基于错误消息的数字)分配给同名变量nominale。如果您将变量名称更改为某些内容,我认为您将获得成功。

[#macro TeilbetragProzent]
[#assign gesamt = ((verkaufsauftrag.beteiligungGesamt)!"") /]
[#assign nom = ((nominale.betrag)!"")/]
[#if (gesamt?string)!=""] 
[#assign prozent = ((nom/gesamt)*100)/]
${(prozent)?string["0.##"]}
[#else]100
[/#if]
[/#macro]