1

我想知道 StringTemplate 是否有/支持数字的递增。
情况是:

输入:是一个具有“isKey()getName()”吸气剂的对象数组。
输出应该是(i=0; IF !obj.getKey() THEN ps.setObject(i++,obj.getName)) ENDIF):

ps.setObject(1,"Name");  
ps.setObject(2,"Name");  
ps.setObject(3,"Name");  
...

目前我有下一个 ST<objs:{<if(it.key)><else>ps.setObject(<i>, <it.name;>);<"\n"><endif>}>
如果第一个是关键,则输出:

ps.setObject(2,"Name");  
ps.setObject(3,"Name");  
ps.setObject(4,"Name");  
...

现在问题我需要找到一种方法将“i”替换为仅在条件为真时才会增加的东西。

遇到此类问题的PLS建议!

4

1 回答 1

0

一般来说,为了响应 ST 获取状态而更改状态并不是一个好主意,因此在开始生成之前,应该在模型中对非关键字段进行编号。

为托管该属性nonKeyIndex的模型类添加一个 getter 。name遍历所有兄弟姐妹,并根据需要对它们进行编号(即从一个开始并跳过编号中的键)。现在您可以使用此 ST 生成所需的输出:

<objs:{<if(it.key)><else>ps.setObject(<it.nonKeyIndex>, <it.name;>);<"\n"><endif>}>

有时可能无法将方法添加nonKeyIndex到模型类中。在这种情况下,您应该将您的类包装到专门设计用于使用字符串模板的视图类中,并在那里添加额外的属性:

public class ColumnView {
    private final Column c;
    private int nonKeyIdx;
    public ColumnView(Column c) {this.c = c;}
    public String getName() { return c.getName(); }
    public boolean getKey() { return c.getKey(); }
    public int getNonKeyIndex() { return nonKeyIdx; }
    public void setNonKeyIndex(int i) { nonKeyIdx = i; }
}
于 2012-06-27T13:59:55.470 回答