我想在我的 ISML 模板中创建一个没有可迭代对象的循环。在此模板的运行期间,将定义条件或更确切地说是迭代次数。有没有可能像 java "for (int i = 0; i < 5; i++)" 那样有一个循环语句,但没有复杂的 java 代码?
问问题
1750 次
1 回答
2
我相信,没有真正优雅的方式。那是因为这样的计算不属于视图层。这不仅适用于 ISML,也适用于其他模板引擎,例如 Thymeleaf。见这里。
ISLOOP
需要以下标准 Java 实例之一iterator
:
java.util.Enumeration
java.util.Iterator
java.util.Collection
例如:
<isloop iterator="products" alias="product" counter="c">
</isloop>
循环内的控制流可以用isbreak
和改变isnext
:
<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。如果您需要更具体的答案,请在您的问题中提供更多上下文。
于 2017-03-15T19:31:24.420 回答