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



我想在我的 ISML 模板中创建一个没有可迭代对象的循环。在此模板的运行时,将定义条件或迭代次数。是否有可能像在 java 中那样有一个循环状态"for (int i = 0;我<5;i++("但没有复杂的Java代码?

我相信没有真正优雅的方式。这是因为此类计算不属于视图图层。这不仅适用于 ISML,也适用于其他模板引擎,例如 Thymeleaf。看这里。

ISLOOP iterator 中需要以下标准 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++;
    }
}

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

相关内容

  • 没有找到相关文章

最新更新