#java #freemarker
#java #freemarker
Вопрос:
в моем шаблоне я хотел бы реализовать некоторую динамическую логику, основанную на XML, который я обрабатываю, я хочу получить курс валюты из моего dict в моем шаблоне.
—мой 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-->
-->
Я ожидаю, что оно войдет в dict и даст мне 0,923 на основе валюты в моем XML.
Есть ли какой-либо другой способ, который работает?
Ответ №1:
Вы можете использовать namespace
специальную переменную следующим образом:
<#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]}