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>}>
そして、1st がキーである場合の出力:

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

ここで、「i」を、条件が真の場合にのみインクリメントされるものに置き換える方法を見つける必要があります。

この種の問題に直面したPLSのアドバイス!

4

1 に答える 1

0

一般に、STが状態を取得することに応じて状態を変更することはお勧めできません。そのため、生成を開始するに、モデルで非キーフィールドに番号を付ける必要があります。

nonKeyIndexプロパティをホストするモデルのクラスにのゲッターを追加しnameます。すべての兄弟を調べ、必要に応じて番号を付けます(つまり、1つから始めて、番号のキーをスキップします)。これで、この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 に答える