【问题标题】:How to get the maximum value in an array in Velocity Template Language (VTL)如何在 Velocity 模板语言 (VTL) 中获取数组中的最大值
【发布时间】:2020-06-22 12:36:01
【问题描述】:

使用速度模板语言(VTL),我想得到一个数组的最大值。我通过 Apache Velocity 的文档查找了很长时间,但找不到执行此操作的方法。

这是我的示例数组:

#set($array = [2,4,12,3,1,4,34,8])
$sorter.sort($array)

在这个例子中,我想得到34

【问题讨论】:

    标签: arrays velocity vtl apache-velocity


    【解决方案1】:

    如果只需要最大值,那么对数组进行排序有点过分。

    如果您可以访问 Velocity 上下文,最好的选择是让 Java 工具为您完成。

    如果您无法访问上下文,或者只是想要一个快速而肮脏的解决方案,您可以执行以下操作:

    #set($max = -10000)
    #foreach($val in $array)
      #set($max = $math.max($max,$val))
    #end
    

    这需要org.apache.velocity.tools.generic.MathTool 出现在上下文中。如果不是这样,您仍然可以简单地执行以下操作:

    #set($max = -10000)
    #foreach($val in $array)
      #if($val > $max)
        #set($max = $math.max($max,$val))
      #end
    #end
    

    【讨论】:

    • 谢谢克劳德。幸运的是,数学工具在我的上下文中可用。感谢您提供更专业的解决方案:)
    • 不客气。作为一个侧节点,作为 Velocity 的维护者之一,我适时注意到拥有 MathTool.max(Collection) 方法会很酷......
    猜你喜欢
    • 1970-01-01
    • 2022-12-06
    • 2018-01-29
    • 2019-12-27
    • 2018-11-09
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多