【问题标题】:FreeMarker hash lookup using object graph notation使用对象图符号的 FreeMarker 哈希查找
【发布时间】:2012-03-10 18:34:58
【问题描述】:

我在从 struts2 标记填充的参数映射中有 2 个变量,如下所示:

  1. obj - 带有各种子对象的 java 对象。它可以被视为 freemarker 模板中的哈希。
  2. displayProperty - 在obj 中包含属性名称的字符串。名称可以是包含多个向下钻取级别的对象图。

我想使用 freemarker 模板显示obj 的给定属性。例如,如果displayPropertyentity.name,那么它本质上应该打印obj.entity.name 的值。

我的 freemarker 模板是 ${obj[displayProperty]},但是当 displayProperty 包含一个点时它会失败。

【问题讨论】:

    标签: struts2 freemarker


    【解决方案1】:

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

    【讨论】:

    • 谢谢。 eval 工作正常。性能对我们来说不是问题。
    猜你喜欢
    • 2018-10-02
    • 2018-07-24
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 2015-03-20
    • 2021-07-01
    • 2011-07-10
    • 2016-10-21
    相关资源
    最近更新 更多