我在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方法。