无法解释速度的行为

时间:2013-07-25 08:53:00

标签: java velocity

拥有像

这样的速度模板
#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呈现文本时,我得到:

  • 第一列:“class ... ReportRow MyKey” - 它是o'k - $ item包含我的对象,它的Key字段是可访问的;
  • 代表第二栏:“$ item.summary $ item.Summary $ item.getSummary()” - 为什么

在上下文中放置项时,所有字段都不为空。

我错过了什么?

1 个答案:

答案 0 :(得分:1)

因为getter是private。出于明显的安全原因,Velocity不允许从模板调用私有方法。只需使用方法public即可使其正常工作。