无法使用Freemarker

时间:2015-08-03 20:21:13

标签: java templates freemarker

我在eclipse中使用freemarker 2.3.23来生成报告。 以下是数据模型的代码:

ArrayList<Cell> namelist=new ArrayList<Cell>();         
Cell cell1=new Cell();      
cell1.data.add("element1");         
namelist.add(cell1);
Cell cell2=new Cell();
cell2.data.add("element2");
namelist.add(cell2);
data.put("namelist", namelist);

Cell类的代码:

public class Cell {
    public ArrayList<String> data;
    public Cell(){
        data=new ArrayList<String>();
    }
}

模板代码:

  <#list namelist as name>
    <#list name.data as element>
      ${element}
    </#list>
  </#list>

但得到错误堆栈如下:

  

FreeMarker模板错误:以下内容已评估为null或   失踪:   ==&GT; name.data [在模板“report.ftl”第33行,第16栏]

     

----提示:这是导致此错误的最后一个点之后的步骤,而不是之前的那个。   ----提示:如果已知失败的表达式合法地引用有时为null或缺失的内容,则指定默认值   像myOptionalVar!myDefault这样的值,或者使用&lt; #if   myOptionalVar ??&gt;在至今&LT;#其他&gt;在缺失。 (仅限这些   涵盖表达的最后一步;覆盖整个表达,

     

使用括号:(myOptionalVar.foo)!myDefault,(myOptionalVar.foo)??

     

---- FTL堆栈跟踪(“〜”表示与嵌套相关):

     

- 失败于:#list name.data as element [in template“report.ftl”at line 33,column 9]

1 个答案:

答案 0 :(得分:1)

似乎你必须为data创建一个getter。形成docs

  

请注意,公共字段不会直接显示;你必须为他们写一个getter方法。