Jira 如何在Velocity模板中打印对象列表?
这是一个非常基本的问题,我很确定我做错了什么,或者做了一些假设。来吧 我正在编写一个Jira插件,它使用Velocity模板系统。我有一个ResultRow对象列表,其中ResultRow是一个具有单个成员变量的类:String key:Jira 如何在Velocity模板中打印对象列表?,jira,velocity,Jira,Velocity,这是一个非常基本的问题,我很确定我做错了什么,或者做了一些假设。来吧 我正在编写一个Jira插件,它使用Velocity模板系统。我有一个ResultRow对象列表,其中ResultRow是一个具有单个成员变量的类:String key: public class ResultRow { public String key; } 我有这些结果视图的列表: List<ResultRow> rows = new ArrayList<ResultRow>(); Resu
public class ResultRow {
public String key;
}
我有这些结果视图的列表:
List<ResultRow> rows = new ArrayList<ResultRow>();
ResultRow row = new ResultRow();
row.key = "foo";
rows.add(foo);
Map<String, Object> velocityParams = new HashMap<String, Object>();
velocityParams.put("rows", rows);
return descriptor.getHtml("view", velocityParams);
List rows=new ArrayList();
ResultRow行=新ResultRow();
row.key=“foo”;
行。添加(foo);
Map velocityParams=新HashMap();
velocityParams.put(“行”,行);
返回描述符.getHtml(“视图”,velocityParams);
我尝试在模板中列出这些行,并使用以下内容:
#foreach ($row in $rows)
<tr><td>$row.key</td></tr>
#end
#foreach($rows中的行)
$row.key
#结束
我希望输出为:foo。令人恼火的是,模板系统只是打印文本字符串“$row.key”,而不是key的内容。为了验证“$row”确实是一个对象,我使用了以下模板:
#foreach ($row in $rows)
<tr><td>$row</td></tr>
#end
#foreach($rows中的行)
美元行
#结束
结果如预期:com.domain.jira。ResultRow@7933f2c6.
我想我可能错过了这门课的一些要求。是否需要以某种特殊的方式定义它,以向Velocity建议某些成员在模板中可用?吉拉是否使用了一些只适用于某些物体的特殊时髦版本的速度?我想答案是你不能做我想做的事情。您可以调用成员方法,但不能访问成员变量,这意味着您需要向类中添加getter。(我发誓我试过了。啊,好吧。)我想答案是你不能做我想做的事。您可以调用成员方法,但不能访问成员变量,这意味着您需要向类中添加getter。(我可以发誓我试过了。啊,很好。)速度不暴露场,只暴露方法。有几种方法可以改变这一点:
- 您可以创建自己的Uberspect类,允许访问公共字段
- 您可以使用Velocity的FieldMethodizer的修改版本包装该实例,该版本允许访问非静态字段
- 您可以在上下文中添加并使用“工具”类的实例,例如VelocityTool的ClassTool的子类
- 您可以创建自己的Uberspect类,允许访问公共字段
- 您可以使用Velocity的FieldMethodizer的修改版本包装该实例,该版本允许访问非静态字段
- 您可以在上下文中添加并使用“工具”类的实例,例如VelocityTool的ClassTool的子类