0

有速度模板

#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 传递给变量“项目”,并希望速度绘制项目摘要。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” - 没关系 - $item 包含我的对象,并且它的 Key 字段是可访问的;
  • 对于第二列:“$item.summary $item.Summary $item.getSummary()” -为什么

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

我错过了什么?

4

1 回答 1

1

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

于 2013-07-25T18:42:56.867 回答