【问题标题】:Velocity Template : Display from nth position of an array速度模板:从数组的第 n 个位置开始显示
【发布时间】:2018-11-15 16:48:08
【问题描述】:

为了自定义应用动态电子邮件模板,我们必须使用velocity template 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)}

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

【问题讨论】:

    标签: arrays get velocity appdynamics


    【解决方案1】:

    在 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
    

    【讨论】:

    • 这行得通。谢谢克劳德。我错过了 output.size() - 1。我正在尝试使用 output.size()。
    猜你喜欢
    • 1970-01-01
    • 2020-06-09
    • 2015-10-20
    • 2017-11-28
    • 1970-01-01
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    • 2021-11-06
    相关资源
    最近更新 更多