表达式中的 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]}
在我的模板中,我想根据我正在处理的 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]}