Java 表达式中的Freemarker表达式

Java 表达式中的Freemarker表达式,java,freemarker,Java,Freemarker,在我的模板中,我想基于我正在处理的XML实现一些动态逻辑,我想从模板中的dict中获取货币汇率 --我的XML ... 欧元 美元 ... --我的模板 {${doc.Message…Currency1}.${doc.Message…Currency2} --> 我所期望的是它进入dict,并根据XML中的货币给出0.923。 有没有其他可行的方法?您可以使用名称空间,如下所示: <#assign Currency1="EUR"> <#assign

在我的模板中,我想基于我正在处理的XML实现一些动态逻辑,我想从模板中的dict中获取货币汇率

--我的XML


...
欧元
美元
...
--我的模板


{${doc.Message…Currency1}.${doc.Message…Currency2}
-->
我所期望的是它进入dict,并根据XML中的货币给出0.923。
有没有其他可行的方法?

您可以使用
名称空间,如下所示:

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

${.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]}

${rates[Currency1][Currency2]}

您可以使用
命名空间
,如下所示:

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

${.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]}

${rates[Currency1][Currency2]}