Java StringTemplate:如果条件为真,则增加值

Java StringTemplate:如果条件为真,则增加值,java,stringtemplate,stringtemplate-4,Java,Stringtemplate,Stringtemplate 4,我想了解StringTemplate是否支持数字递增。 情况是: 输入:是一个包含“isKey()和getName()”getter的对象数组。 输出应该是(i=0;IF!obj.getKey()那么ps.setObject(i++,obj.getName))ENDIF): 目前我有下一个ST: 如果1st为键,则输出为: ps.setObject(2,"Name"); ps.setObject(3,"Name"); ps.setObject(4,"Name"); ... 现在我需

我想了解StringTemplate是否支持数字递增。
情况是:

输入:是一个包含“
isKey()
getName()
”getter的对象数组。
输出应该是(
i=0;IF!obj.getKey()那么ps.setObject(i++,obj.getName))ENDIF
):

目前我有下一个ST

如果1st为键,则输出为:

ps.setObject(2,"Name");  
ps.setObject(3,"Name");  
ps.setObject(4,"Name");  
...
现在我需要找到一种方法,用一些只有在条件为真时才会递增的东西来替换“I”


请建议面对此类问题的人

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

nonKeyIndex
的getter添加到承载
name
属性的模型类中。检查所有兄弟姐妹,并根据需要对其进行编号(即从一个开始,跳过编号中的键)。现在,您可以使用此ST生成所需的输出:

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

谢谢你的回复,这是我的一种备用方案。我也希望ST会支持这个案子。如果只是为了打印而手动准备所有输入,那么IMHO、StringTemplate就不那么一致了。@SairuS鉴于ST遵守MVC模式,这是正确的方法。这就是我在上一次使用ST.@SairuS的工作中所做的:“如果只是为了打印而手动准备所有输入,那么,IMHO,StringTemplate就不那么一致了。”ST的思想是将输出依赖项从代码中移开,并移入运行时。你可以设计你的模型一次(即“手动输入所有”),然后编写多个STS来生成C++、java和HTML文档,这些都不需要改变java代码的单行。
<objs:{<if(it.key)><else>ps.setObject(<it.nonKeyIndex>, <it.name;>);<"\n"><endif>}>
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; }
}