如何在FreeMarker中动态访问已赋值的变量?
解决FreeMarker中通过变量名字符串获取对应值的问题
没问题,这个需求在FreeMarker里用内置的.vars对象就能轻松实现,下面是具体的解决方案和说明:
最终可用代码
<#assign U="Unknown" B="both" M="male" F="female"> <div> <span> ${.vars[transaction.addressTransactions.addresses.newInfo.GenderTypeCode.code]} </span> </div>
逻辑说明
.vars是FreeMarker提供的内置对象,它相当于当前模板上下文里所有变量的"映射表"——键是变量的名称(字符串形式),值就是你给变量赋的内容。
举个具体的场景:
如果transaction.addressTransactions.addresses.newInfo.GenderTypeCode.code返回的是U,那.vars[transaction.addressTransactions.addresses.newInfo.GenderTypeCode.code]就等价于直接写${U},会输出Unknown;如果返回的是F,就会输出female,完全匹配你的需求。
快速测试示例
要是你想快速验证这个逻辑,可以用一个简化的模拟变量代替复杂的业务表达式:
<#assign testGenderCode = "M"> <#assign U="Unknown" B="both" M="male" F="female"> <p>测试输出:${.vars[testGenderCode]}</p>
运行这段代码会输出:测试输出:male,能直观看到效果。
内容的提问来源于stack exchange,提问作者Sarah Isaiah
相关产品推荐
相关产品推荐

