我在struts2标签中填充的参数map中有2个变量,如下所示:
obj
- 具有各种子对象的java对象。它可以被视为freemarker模板中的哈希值。displayProperty
- 包含obj
内属性名称的字符串。该名称可以是包含多个向下钻取级别的对象图。我想使用freemarker模板显示obj
的给定属性。例如,如果displayProperty
为entity.name
,那么它应该基本上打印obj.entity.name
的值。
我的自由标记模板为${obj[displayProperty]}
,但在displayProperty
包含点时失败。
答案 0 :(得分:0)
一个解决方案是('obj.' + displayProperty)?eval
,虽然它涉及通用表达式解析,因此不是最快的。运行速度最快的解决方案是创建一个自定义方法(TemplateMethodModelEx
实现),您可以像${walkProperty(obj, displayProperty)}
一样使用它,它会在字符串处拆分字符串,并在循环中调用TempalteHashModel.get
。