表达式中的 Freemarker 表达式

Freemarker Expression in Expression

在我的模板中,我想根据我正在处理的 XML 实现一些动态逻辑 我想从我的模板中的字典中获取货币汇率。

--我的XML

<Message>
...
<Currency1>EUR<Currency1>
<Currency2>USD<Currency2>
...
<Message>

-- 我的模板

<#assign EUR = {"AED":503178,"USD":0.923}>
{${doc.Message...Currency1}.${doc.Message...Currency2}} <-- but something like this is not possible-->
-->

我期待的是它进入字典并根据我 XML 中的货币给出 0.923。 还有其他方法吗?

您可以使用 namespace special variable 如下:

<#assign Currency1="EUR">
<#assign Currency2="USD">
<#assign EUR = {"AED":503178,"USD":0.923}>
${.namespace[Currency1][Currency2]}

但我建议更改您的模型以便更清晰。例如:

<#assign Currency1="EUR">
<#assign Currency2="USD">
<#assign rates= {
        "EUR" : {"AED":4.3,"USD":0.923},
        "USD" : {"AED":3.67,"USD":1.17}
}>
${rates[Currency1][Currency2]}