Как получить доступ / получить размер массива / коллекции в шаблонах скорости? - PullRequest
34 голосов
/ 13 октября 2011

Я использую скорость для шаблонов электронной почты в моем приложении Java / Spring 3.
Как я могу получить размер ArrayList, добавленного к модели из шаблона.

Ответы [ 3 ]

39 голосов
/ 13 октября 2011

Я никогда не использовал Velocity, но в справочном руководстве VTL говорится, что вызов метода выполняется с использованием $customer.getAddress() или ${purchase.getTotal()}.Поэтому я бы использовал ${myArrayList.size()}.

17 голосов
/ 28 января 2013

Доступ к коллекции возможен, как и к любому другому объекту, поэтому $collection.size() будет содержать значение.

Массивы имеют специальный корпус и ведут себя как List, поэтому, хотя $array.length не работает, $array.size() работает.

В более старых версиях Velocity (до 1.6) вы использовали ListTool и ArrayTool.

0 голосов
/ 30 октября 2015

Цитата из руководства разработчика :

Object [] Обычный массив объектов, здесь не нужно много говорить.Velocity внутренне обернет ваш массив в класс, предоставляющий интерфейс Iterator, но это не должно касаться вас как программиста или автора шаблона.Более интересным является тот факт, что Velocity теперь позволяет авторам шаблонов обрабатывать массивы как списки фиксированной длины (начиная с Velocity 1.6).Это означает, что они могут вызывать такие методы, как size (), isEmpty () и get (int) как для массивов, так и для стандартных экземпляров java.util.List, не заботясь о разнице.

Итак, используя size() одинаково хорошо работает на java.util.List и массивах Java.

...