我想知道StringTemplate是否支持/支持数字的增量 情况是:
输入是一组具有“isKey()
和getName()
”getter的对象。
输出应为(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建议!
答案 0 :(得分: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; }
}