【问题标题】:How to access/get the size of an array/collection in velocity templates?如何访问/获取速度模板中数组/集合的大小?
【发布时间】:2026-01-09 00:45:01
【问题描述】:

我在我的 java/spring 3 应用程序中为电子邮件模板使用速度。
如何从模板中获取添加到模型中的 ArrayList 的大小。

【问题讨论】:

    标签: java spring templates velocity


    【解决方案1】:

    我从未使用过 Velocity,但它的 VTL reference guide 表示调用方法是使用 $customer.getAddress()${purchase.getTotal()} 完成的。所以我会使用${myArrayList.size()}

    【讨论】:

    • 该参考是我最近看到的最有趣的示例代码之一。不得不从我的屏幕上清除咖啡......
    【解决方案2】:

    可以像访问任何其他对象一样访问集合,因此$collection.size() 将包含一个值。

    数组是special cased,其行为类似于List,因此虽然$array.length 不起作用,但$array.size() 起作用。

    在旧版本的 Velocity(1.6 之前)中,您将使用 ListToolArrayTool

    【讨论】:

      【解决方案3】:

      引用the developer guide:

      Object[] 正则对象数组,这里不用多说。 Velocity 将在内部将您的数组包装在一个提供 Iterator 接口的类中,但这不应该与您作为程序员或模板作者有关。更有趣的是,Velocity 现在将允许模板作者将数组视为固定长度的列表(从 Velocity 1.6 开始)。这意味着他们可以在数组和标准 java.util.List 实例上调用 size()、isEmpty() 和 get(int) 之类的方法,而不用关心它们的区别。

      因此,使用 size()java.util.List 和 java 数组上同样有效。

      【讨论】: