【问题标题】:Freemarker can't access object fieldFreemarker 无法访问对象字段
【发布时间】:2014-09-06 20:31:08
【问题描述】:

我正在努力解决 Freemarker 的一个奇怪问题。

<#list fieldMap?keys as key> 
    ${fieldMap[key]}

    ${fieldMap[key].name}

</#list> 

控制台是

    GeneratorField{name=expenseType, fieldType=String}

    FreeMarker template error:
The following has evaluated to null or missing:
==> fieldMap[key].name  [in template "ftl/form.ftl" at line 6, column 7]

如您所见,第一行输出的是 GeneratorField 对象的名称,但是为什么第二个命令失败了?

我正在使用 Freemarker 2.3.20

谢谢

【问题讨论】:

  • ${fieldMap[key]} 打印的内容正是 GeneratorField 对象的 toString() 返回的内容。因此,您看到name= 并没有多大意义。那么问题来了,如何在 Java 中获得name?如果使用String getName(),那么该方法是公开的吗?
  • 我找到了原因,GeneratorField被定义为私有内部类,甚至getter方法都是公共的。我只是把它移到普通班,然后就可以了。
  • 好.....然后写这个作为答案......这样其他人就可以知道这个问题已经解决了。

标签: java freemarker


【解决方案1】:

如果 fieldMap 是 JAVA 中的一个类,那么该 JAVA 类中将有 getter 来公开字段 name 以供访问,即,您可以创建一个名为的公共函数getName() 在该类中,然后在您的 ftl 文件中访问相同的函数。

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-12
    • 2016-01-08
    • 1970-01-01
    • 2015-03-26
    • 2012-03-28
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多