首页 > 解决方案 > 如何为freemarker中的嵌套对象赋值

问题描述

这可能很简单,但我在互联网上找不到。我在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

我的问题是我将如何为多个键赋值,我只能用一个键来做

提前致谢

标签: html-emailfreemarker

解决方案


你可以这样做:

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

不是很好,但 FreeMarker 不支持修改传递给模板的对象。如果公开 setter 方法会更方便(请参阅 参考资料?api),但一般来说,如果模板修改对象会很奇怪。


推荐阅读