在没有可迭代对象的情况下在ISML中创建循环的最佳方法是什么?

时间:2017-03-15 13:21:04

标签: intershop isml

我想在没有可迭代对象的情况下在我的ISML模板中创建一个循环。在该模板的运行期间,将定义条件或更确切地说迭代次数。有没有可能像java中一样有循环状态" for(int i = 0; i< 5; i ++)"但没有复杂的Java代码?

1 个答案:

答案 0 :(得分:1)

我相信没有真正优雅的方式。那是因为这样的计算不属于视图层。这不仅适用于ISML,也适用于其他模板引擎,例如: Thymeleaf。请参阅here

ISLOOP需要iterator中的以下标准java实例之一:

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

E.g:

<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++;
    }
}

您也可以使用嵌入在ISML,ISML模块等中的普通JSP scriptlet。如果您需要更具体的答案,请在您的问题中提供更多上下文。