速度模板:从数组的第 n 个位置开始显示

Velocity Template : Display from nth position of an array

要自定义应用程序动态电子邮件模板,我们必须使用 velocity 模板 1.7

我有一个名为 ab-cd-ef-gh 的健康规则。前两部分是常量,后两部分是微服务的名称。我想显示'ef'之后的部分。请注意,健康规则的长度不固定,这意味着从 'ef' 开始的部分可以有 2 部分或 3 部分或 5 部分,具体取决于名称。

我已经使用split函数根据分隔符'-'进行拆分。

设置($output=$originalmessage.split('-'))

输出变量包含健康规则的所有部分。

现在我想从数组的第二个索引开始打印,即从 'ef' 到数组末尾。为了获得数组的大小,我使用了#set($outputsize=$output.size()),即array.size().

如何打印从 'ef' 开始到数组末尾的部分。

我使用的逻辑如下。

#set ($start=5)
#foreach ($i in [$start..$outputsize])
${arrays.asList($output).get($i)}

但是,我没有得到输出。请帮我打印服务名称。

在VTL中,数组和列表是等价的。在它们上面你可以使用 .get(i)[i] 来访问第 i 个元素,或者调用 .size() 方法。

所以我猜

#set ($outputsize = $output.size() - 1)
#set ($start=5)
#foreach ($i in [$start..$outputsize])
  $output.get($i)
#end

就够了,还可以:

#set ($outputsize = $output.size() - 1)
#set ($start=5)
#foreach ($i in [$start..$outputsize])
  $output[$i]
#end