【问题标题】:What is the best way to make a loop in ISML without iterable object?在没有可迭代对象的情况下在 ISML 中创建循环的最佳方法是什么?
【发布时间】:2017-03-15 13:21:03
【问题描述】:

我想在我的 ISML 模板中创建一个没有可迭代对象的循环。在此模板的运行期间,将定义条件或更确切地说是迭代次数。有没有可能像 java "for (int i = 0; i

【问题讨论】:

    标签: intershop isml


    【解决方案1】:

    我相信没有真正优雅的方式。那是因为这样的计算不属于视图层。这不仅适用于 ISML,而且适用于其他模板引擎,例如百里香叶。见here

    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 scriptlet。如果您需要更具体的答案,请在您的问题中提供更多上下文。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-27
      • 2020-09-22
      • 1970-01-01
      • 2021-03-23
      • 2017-04-21
      相关资源
      最近更新 更多