Macros 将参数动态传递给freemarker宏

Macros 将参数动态传递给freemarker宏,macros,freemarker,Macros,Freemarker,我在freemarker中有一个宏 <#macro printHelloWorld var1 var2> ${var1} ${var2} </#macro> ${var1} ${var2} 当我把这个宏称为 <@macro printHelloWorld var1="hello" var2="world" /> 它以预期的方式打印它 你好 世界 然而,我的问题是我想动态地传递这个变量名。我从一个源动态接收宏参数, 我

我在freemarker中有一个宏

<#macro printHelloWorld var1 var2>  
    ${var1}  
    ${var2}  
</#macro>  

${var1}
${var2}
当我把这个宏称为

<@macro printHelloWorld var1="hello" var2="world" />

它以预期的方式打印它
你好 世界

然而,我的问题是我想动态地传递这个变量名。我从一个源动态接收宏参数, 我想把它们传下去。类似于

$paramater1 = "var1"
$parameter2 = "var2"
$valueForParameter1 = "hello"
$valueForParameter2 = "world"

<@macro printHelloWorld paramater1=valueForParameter1 parameter2=valueForParameter2 />
$paramater1=“var1”
$parameter2=“var2”
$valueForParameter1=“您好”
$valueForParameter2=“世界”
我想让它和电话一样

<@macro printHelloWorld var1="hello" var2="world" />

我找不到任何解决办法。有什么建议吗

为了更详细地描述用例


实际上,我们有一个freemarker宏,通过Java标记公开,它接受动态属性。我希望能够调用此宏,并为其动态提供参数。

没有语言功能可以做到这一点。有两种可能性可以做类似的事情:

  • 一种是简单地将FTL哈希(如
    映射
    )传递给宏,如
    。在这种情况下,参数值表达式也可以是在Java中动态创建的
    Map

  • 另一种方法是定义一个类似于
    的宏,在这种情况下
    {'a':1,'b':2}
    作为
    其他参数传递。但是,在这种情况下,不能将外部构造的哈希作为
    otherParams
    传递