2014-09-06 63 views
1

我正在努力解决Freemarker奇怪的问题。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

感谢

+0

'$ {fieldMap [key]}'打印的是'GeneratorField'对象的'toString()'返回的内容。所以你看到'name ='没有多少意义。所以问题是,你如何获得Java中的'name'?如果用'String getName()'那么是否该方法是public? – ddekany 2014-09-07 20:49:37

+0

我找到了原因,将GeneratorField定义为私有内部类,即使getter方法是公共的。我只是把它移动到普通班上,然后它就可以工作。 – user595234 2014-09-08 00:48:13

+1

不错.....然后写这个答案...所以其他人可以知道这个问题已经解决了。 – 2014-09-08 07:29:47

回答

0

如果fieldMap是在JAVA类,然后会出现在JAVA类干将,露出场访问,即您可以在该类中创建一个名为getName()的公共函数,然后在您的ftl文件中访问相同的函数。

希望它有帮助。