【问题标题】:How to check method is present in action or not in freemarker?如何检查方法是否存在于freemarker中?
【发布时间】:2014-12-01 13:03:09
【问题描述】:

我想检查我的 freemarker(ftl) 文件中是否包含方法,但似乎没有办法。 FTL 支持检查变量和宏,但不支持检查动作方法。我觉得很奇怪。

例如

[#if action.hasMethodPresent()??]
     ${action.hasMethodPresent()}
[/#if]

上面的代码 sn-p 给出了模板错误。可能会有其他方法来实现这一点,但我不确定。感谢相关答案。

提前致谢。

【问题讨论】:

    标签: freemarker


    【解决方案1】:

    应该是[#if action.hasMethodPresent??]。因为,如果你把 () 放在那里,那么你告诉 FreeMarker 调用该方法并检查它是否有(非null)返回值。

    【讨论】:

    • @ddekany 如果我的函数与同一个类中的参数同样命名怎么办? ?? 也可以检查属性的存在,这会冲突吗?
    • @SimonBaars 我不确定类中的“参数”是什么意思。如果是归档,则默认情况下 FreeMarker 不会公开字段,因此不会引起任何混淆。
    • 哦,对不起,我的意思确实是字段。我对以下问题的公认答案感到困惑:stackoverflow.com/questions/41099386/…。它显示了使用?? 来检查字段是否存在。
    • @SimonBaars 我没有看到“字段”的答案,但无论如何,如果 FreeMarker 配置为公开 Java 字段,它不妨检查一下。从模板语言的角度来看,只有子变量(如foo.bar 中的bar),它可以检查它们是否具有非null 值。它不知道 Java 端的子变量映射到什么(这取决于使用的 ObjectWrapper)。
    【解决方案2】:

    你可以直接写${(action.hasMethodPresent())!}

    【讨论】:

      猜你喜欢
      • 2010-09-23
      • 2011-11-26
      • 2014-04-11
      • 1970-01-01
      • 2016-02-29
      • 2017-02-24
      • 1970-01-01
      • 2012-12-04
      相关资源
      最近更新 更多