Scripting 在velocity报告脚本中,如何查找用户名是否已存在?

Scripting 在velocity报告脚本中,如何查找用户名是否已存在?,scripting,velocity,Scripting,Velocity,在for循环中,变量$dispNames将使用用户名和姓氏进行更新 set( $dispNames = $dispNames + $user.firstName + " " + $user.lastName + ", ") 如何检查该用户是否已存在于字符串中,而忽略添加到此变量?这里的良好做法是确保迭代的Java集合中没有重复项,或者通过将这些名称放在Java端的集合中来删除重复项 但如果此解决方案在您的环境中无法访问,您可以尝试: #set ($seenUser

在for循环中,变量$dispNames将使用用户名和姓氏进行更新

set( $dispNames = $dispNames + $user.firstName + " " + $user.lastName + ", ")               

如何检查该用户是否已存在于字符串中,而忽略添加到此变量?

这里的良好做法是确保迭代的Java集合中没有重复项,或者通过将这些名称放在Java端的集合中来删除重复项

但如果此解决方案在您的环境中无法访问,您可以尝试:

#set ($seenUsers = {})
#foreach ($user in $myUsersCollection)
  #set ($fullName = "$user.firstName $user.lastName")
  #if (!$seenUsers.containsKey($fullName))
    #set ($junk = $seenUsers.put($fullName, 1))
    #if ($dispNames.length() > 0)
      #set ($dispNames = "$dispNames,")
    #end
    #set ($dispNames = "$dispNames, $fullName")
  #end
#end
此解决方案使用地图来记住是否已看到特定用户。此外,它避免在姓氏后添加昏迷

set( $dispNames = $dispNames + $user.firstName + " " + $user.lastName + ", ")               
您还将注意到,在Velocity中连接字符串的正确方法是使用现有引用格式化较大的字符串,而不是使用+运算符(专用于数字加法)