В скрипте отчета о скорости, как найти, если имя пользователя уже присутствует? - PullRequest
0 голосов
/ 10 сентября 2018

В цикле for переменная $ dispNames обновляется с именем и фамилией пользователя.

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

Как проверить, существует ли этот пользователь в строке, и игнорировать добавление к этой переменной?

1 Ответ

0 голосов
/ 11 сентября 2018

Хорошей практикой здесь было бы, скорее, убедиться, что в коллекции Java, которую вы перебираете, нет дубликатов, или удалить дубликаты, поместив эти имена в Set на стороне 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

Это решение использует карту, чтобы запомнить, был ли уже виден конкретный пользователь. Кроме того, он избегает добавления комы после фамилии.

Вы также заметите, что правильным способом объединения строк в Velocity является форматирование больших строк с существующими ссылками, а не использование оператора +, который предназначен для числовых сложений.

...