2017-03-15 23 views
0

反復可能なオブジェクトなしでISMLテンプレートにループを作りたいと思います。このテンプレートのランタイム中に、条件またはむしろ反復回数が定義されます。 Javaのようなループのステートメントを持つ可能性はありますか? "(int i = 0; i < 5; i ++)"ではなく、複雑なJavaコードなし?反復可能オブジェクトなしでISMLでループを作成する最適な方法は何ですか?

答えて

1

本当にエレガントな方法はありません。そのような計算はビューレイヤーに属さないためです。これは、ISMLだけでなく、他のテンプレートエンジン、例えばThymeleaf。 hereを参照してください。

ISLOOPiteratorにおける以下の標準Javaインスタンスのいずれかを必要とする:

java.util.Enumeration 
java.util.Iterator 
java.util.Collection 

例:

<isloop iterator="products" alias="product" counter="c"> 

</isloop> 

ループ内の制御フローはisbreakisnextで変更することができる。

<isloop 
iterator = "{ISML variable identifier}" 
[ alias = "{simple name}" ] 
[ counter = "{counter name}" ] 
> 
... some HTML and ISML code ... 
[<isnext>] 
[<isbreak>] 
</isloop> 

あなた本当には、あなたがこのような単純なように、例えば、独自のイテレータを作成し、パイプラインやISMLモジュールからのパイプライン辞書にそれを置くことが必要な場合:

class MyIterator implements Iterator<Integer> 
{ 
    private final int max; 
    private int current; 

    MyIterator(int max) 
    { 
     this.max = max; 
    } 

    @Override 
    public boolean hasNext() 
    { 
     return current < max; 
    } 

    @Override 
    public Integer next() 
    { 
     return current++; 
    } 
} 

あなたはまた、プレーンなJSPを使用することができますISML、ISMLモジュールなどに埋め込まれたスクリプトレットレットなどがあります。より具体的な答えが必要な場合は、質問に文脈を追加してください。

関連する問題