Как присвоить значения вложенному объекту в freemarker - PullRequest
0 голосов
/ 05 июня 2019

Это может быть просто, но я не могу найти его в интернете. У меня есть вложенный объект в freemarker, как показано ниже, который имеет несколько ключей. Я не могу присвоить значение более чем одному ключу. Я могу присвоить значение только одному ключу

<#assign modifiedObjectChng = {
    "beforeDep": {
        "range": [],
        "newTravelDate": "",
        "reissueAllowed": false,
        "changeAllowed": false,
        "maxPenality": ""
},
"afterDep": {
        "range": [],
        "newTravelDate": "",
        "reissueAllowed": false,
        "changeAllowed": false,
        "maxPenality": ""
}
}>
<#assign modifiedObjectChng = modifiedObjectChng + { "beforeDep" : {"newTravelDate" : "AAA" }}>
<#assign modifiedObjectChng = modifiedObjectChng + { "beforeDep" : {"reissueAllowed" : "BBB" }}>

${modifiedObjectChng.beforeDep.newTravelDate} //Output : error following has evaluated to null
${modifiedObjectChng.beforeDep.reissueAllowed} // gives correct result

Моя проблема в том, как назначить значение нескольким клавишам, которые я могу сделать только одной клавишей

Заранее спасибо

1 Ответ

0 голосов
/ 08 июня 2019

Вы можете сделать это так:

<#assign modifiedObjectChng = modifiedObjectChng + { "beforeDep" : modifiedObjectChng.beforeDep + {"newTravelDate" : "AAA" }}>
<#assign modifiedObjectChng = modifiedObjectChng + { "beforeDep" : modifiedObjectChng.beforeDep + {"reissueAllowed" : "BBB" }}>

Не очень приятно, но FreeMarker не поддерживает изменение объектов, которые были переданы в шаблон. Это более удобно, если доступны методы установки (см. ?api), но в целом довольно странно, если шаблоны изменяют объекты.

...