【问题标题】:Remove certain element from array in Velocity Template Language (VTL)从 Velocity 模板语言 (VTL) 中的数组中删除某些元素
【发布时间】:2020-09-27 19:44:13
【问题描述】:

我想从 Velocity 模板语言的数组中删除某个元素。我通过 Apache VTL 的文档没有找到任何合适的方法,这就是我在这里寻求帮助的原因。我试过以下(.remove() 似乎不是数组项的方法):

#set($linkedWIARRAY = ["ABC-123, DEF-345, GHI-678"])

#set($dummy=$linkedWIARRAY.add("JKL-901"))

#set($dummy = $linkedWIARRAY.remove("DEF-345"))

$linkedWIARRAY

$linkedWIARRAY 返回[ABC-123, DEF-345, GHI-678, JKL-901],表明remove 很可能不作为数组上的方法存在;)

关于 SO 有一个类似的问题,但对我没有帮助: velocity template drop element from array

【问题讨论】:

  • $linkedWIARRAY.class.name 显示什么?
  • @ClaudeBrisson:这是一个java.util.ArrayList

标签: java arrays velocity apache-velocity velocity-template-language


【解决方案1】:

问题在于列表的初始化。应该是:

#set($linkedWIARRAY = ["ABC-123", "DEF-345", "GHI-678"])

也就是说,每个字符串都应该用双引号引起来,而不是整个字符串。

【讨论】:

  • 我可以再向您提出一个问题吗? :) 我怎样才能以这种方式初始化一个空的arraylist,添加到这个arraylist的值“嵌入”在""->"vaue","value"中。当我使用#set($linkedWIARRAY = []) 然后像#set($dummy = $linkedWIARRAY.add("${linkedWILevel1.getId}")) 一样向它添加值时,返回的arraylist 看起来像:[ABC-123, DEF-345]
  • @SteffPoint 您应该首先问自己一个问题,即您是否希望引号出现在数组中,或者在显示数组值时将引号添加到数组值周围。第二个选项对我来说看起来更自然,因此您应该向自己展示数组元素,并在其周围添加引号......如果您这样做是为了能够格式化 JSON,请不要使用数组列表,这很尴尬,请使用您上下文中的一些 Json 工具将正确格式化输出。周围有很多。
猜你喜欢
  • 2020-06-22
  • 2022-12-06
  • 1970-01-01
  • 1970-01-01
  • 2020-06-25
  • 2018-11-09
  • 2020-02-13
  • 2011-09-01
  • 2021-02-12
相关资源
最近更新 更多