使用对象图表示法进行FreeMarker哈希查找

时间:2012-02-20 12:03:00

标签: struts2 freemarker

我在struts2标签中填充的参数map中有2个变量,如下所示:

  1. obj - 具有各种子对象的java对象。它可以被视为freemarker模板中的哈希值。
  2. displayProperty - 包含obj内属性名称的字符串。该名称可以是包含多个向下钻取级别的对象图。
  3. 我想使用freemarker模板显示obj的给定属性。例如,如果displayPropertyentity.name,那么它应该基本上打印obj.entity.name的值。

    我的自由标记模板为${obj[displayProperty]},但在displayProperty包含点时失败。

1 个答案:

答案 0 :(得分:0)

一个解决方案是('obj.' + displayProperty)?eval,虽然它涉及通用表达式解析,因此不是最快的。运行速度最快的解决方案是创建一个自定义方法(TemplateMethodModelEx实现),您可以像${walkProperty(obj, displayProperty)}一样使用它,它会在字符串处拆分字符串,并在循环中调用TempalteHashModel.get