我在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);


单元格类的代码:

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或
失踪:
==> name.data [在模板“ report.ftl”中,第33行,第16列]

----提示:导致此错误的是最后一个圆点之后的步骤,而不是此错误之前的步骤。
----提示:如果已知失败的表达式在法律上是指有时为空或缺失的内容,请指定默认值
值,例如myOptionalVar!myDefault,或使用 myOptionalVar ??>何时存在何时缺失。 (仅这些
覆盖表达式的最后一步;涵盖整个表达,

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

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

-在以下位置失败:#list name.data作为元素[在第33行第9列的模板“ report.ftl”中]

最佳答案

看来您必须为data创建一个吸气剂。形成docs


请注意,公共字段不直接可见;您必须为他们编写一个getter方法。

09-11 17:32