拥有像
这样的速度模板#foreach($item in $items)
<tr>
<td>$item.getClass() $item.getKey()</td>
<td>$item.summary $item.Summary $item.getSummary()</td>
</tr>
#end
Velocity manual sais,我可以将$ item字段作为getter访问 - “getSummary()”。
我将ReportRow项目的ArrayList传递给变量“items”,并希望velocity绘制项目摘要。 ReportRow是一个简单的POJO类:
public class ReportRow {
private String key;
private String summary;
public ReportRow(String key, String summary) {
this.key = key;
this.summary = summary;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
private String getSummary() {
return summary;
}
private void setSummary(String summary) {
this.summary = summary;
}
@Override
public String toString() {
return key + " " + summary;
}
}
当Velocity呈现文本时,我得到:
在上下文中放置项时,所有字段都不为空。
我错过了什么?
答案 0 :(得分:1)
因为getter是private
。出于明显的安全原因,Velocity不允许从模板调用私有方法。只需使用方法public
即可使其正常工作。