【问题标题】:How to access next element in loop in VM如何在VM中访问循环中的下一个元素
【发布时间】:2013-01-23 11:27:08
【问题描述】:

我需要访问foreach 中的下一个元素来比较一些值。

在 JSP 中,我添加了一些虚拟元素,并像这样循环;

for(int i=0; i<list.size() - 1; i++) {
    MyClass element = list.get(i);
    MyClass nextElement = list.get(i+1);

    if(element.getSomeValue() > nextElement.getSomeValue())
        doSome();
        ...

但据我所知,在 VM 中,我无法通过索引获取元素。 如果有一些方法可以访问下一个元素,请帮助我。

【问题讨论】:

    标签: loops for-loop foreach velocity


    【解决方案1】:

    您的 Velocity 模板(.vm 文件)可以访问放置在 Context 中的任何 Java 对象。在您的支持 Java 类或 Velocity servlet 中,将您的列表放入上下文中:

    context.put("list", myList);
    

    然后在您的 Velocity 模板中,您可以将其引用为 $list,并且您可以使用 $list.get(i) 等对其调用方法。请注意,与 JSP 不同,您不能将纯 Java 代码放在 Velocity 模板中,您必须使用VTL

    【讨论】:

    • 我了解$list.get(i)$list.get(i+1)。但是for(int i=0; i&lt;list.size() - 1; i++){} 呢?
    • Velocity 没有 for 循环的“本机”概念,但您可以使用 #foreach 安装等效项。看看this post
    猜你喜欢
    • 2010-09-24
    • 2010-09-24
    • 2017-12-26
    • 2021-09-24
    • 2014-12-16
    • 2020-04-14
    • 2020-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多