2014-06-06 55 views
0

我想用動態名稱設置一個變量。這意味着我的新變量的名稱來自另一個變量:動態Freemarker變量名

<#-- in real world I wouldn't declare this variables right here - 
    they would come from somewhere else --> 
<#assign varName = "myVarName"/> 
<#assign varValue = "myVarValue/> 

<#... set the variable .../> 

所以該值可以如下引用:

${myVarName} <#-- prints "myVarValue" --> 

在Java指令中,我會用

Environment#setVariable(String name, TemplateModel model) 

實現此目的。但是有沒有可能直接通過Freemarker實現這一點?

回答

1

沒有指令指定給具有動態名稱的變量。但這是一個黑客來實現這一點:

<@'<#assign ${varName} = varValue>'?interpret /> 

雖然這並不是非常快。它每次評估時都會涉及FTL解析。

+0

謝謝,這工作。我提交了一個指令的功能請求(https://sourceforge.net/p/freemarker/feature-requests/93/)。 – rzueger

2

使用散列。也就是說,使用變量的名稱作爲哈希鍵。

+0

Thx爲您的答案。我不確定你的意思。我真的需要通過編寫$ {myVarName}來訪問新變量作爲頂級變量。 – rzueger