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