使用 Velocity 模板语言创建并迭代数组
如何在VTL中创建数组并向数组添加内容?另外如何通过索引检索数组的内容?
How to create an array in VTL and add contents to the array? Also how to retrieve the contents of the array by index?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
根据 Apache Velocity 用户指南,赋值的右侧可以是
您可以在 Apache Velocity 模板中使用以下表达式创建一个空列表,它将满足您对数组的所有需求:
或初始化值:
然后,使用 Java 添加元素add 方法:
但要注意,由于列表类型的 Java .add() 方法返回一个布尔值,当您向列表中添加元素时,Velocity 会根据结果打印,例如“true”或“false”的“添加”功能。
一个简单的解决方法是将 add 函数的结果分配给变量:
您可以使用索引号访问列表的元素:
上面的表达式将显示带有文本“a string”的范围。然而,访问列表元素的最安全方法是使用 foreach 循环。
According to Apache Velocity User Guide, right hand side of assignments can be of type
You can create an empty list, which would satisfy all your needs for an array, in an Apache Velocity template with an expression like:
or initialize values:
then, add elements using the Java add method:
but beware, as the Java .add() method for the list type returns a boolean value, when you add an element to the list, Velocity will print, for instance, "true" or "false" based on the result of the "add" function.
A simple work around is assigning the result of the add function to a variable:
You can access the elements of the list using index numbers:
Expression above would show a span with the text "a string". However the safest way to access elements of a list is using foreach loops.
创建数组很容易:
将元素放入数组也很容易:
从数组中获取元素取决于您的 Velocity 版本。
在 Velocity 1.6 中您必须使用
从 Velocity 1.7 开始您可以使用经典形式:
Creating an array is easy:
Putting an element into an array is also easy:
Getting an element from an array depends from your Velocity version.
In Velocity 1.6 you must use
Since Velocity 1.7 you can use the classic form:
我没有在VTL中创建数组,而是将数组传递到VTL上下文并使用它们。在VTL中,您不能通过索引检索数组内容,您只能使用foreach,例如,此代码是从我的动态SQL生成VTL脚本复制的:
因此,我们也不能拥有2D数组。当我需要一个数组来连续存储 2 个对象时,我使用了定义一个新类并将该类的对象放入一维数组中的解决方法。
I haven't created an array in VTL but passed arrays to VTL context and used them. In VTL, you can not retrieve array contents by index, you only use foreach, as example this code is copied from my Dynamic SQL generation VTL Script:
For this reason, we also can not have 2D arrays. When I needed an array to store 2 objects in a row, I used the workaround of defining a new class, and putting objects of that class in the single dimensional array.