2014-09-06 59 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文件中訪問相同的函數。

希望它有幫助。