在速度报告脚本中,如何查找用户名是否已经存在?

时间:2018-09-10 13:56:28

标签: scripting velocity

在for循环中,变量$ dispNames被更新为用户的名字和姓氏。

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

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

1 个答案:

答案 0 :(得分:1)

这里的一个好习惯是确保您要遍历的Java集合中没有重复项,或者通过将这些名称放在Java端的Set中来删除重复项。

但是,如果您的环境无法使用此解决方案,则可以尝试:

#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

此解决方案使用地图来记住是否已经看到特定用户。另外,它避免在姓氏后面添加逗号。

您还将注意到,在Velocity中连接字符串的正确方法是使用现有引用格式化较大的字符串,而不要使用专用于数字加法的+运算符。