Я использую скорость для шаблонов электронной почты в моем приложении Java / Spring 3. Как я могу получить размер ArrayList, добавленного к модели из шаблона.
Я никогда не использовал Velocity, но в справочном руководстве VTL говорится, что вызов метода выполняется с использованием $customer.getAddress() или ${purchase.getTotal()}.Поэтому я бы использовал ${myArrayList.size()}.
$customer.getAddress()
${purchase.getTotal()}
${myArrayList.size()}
Доступ к коллекции возможен, как и к любому другому объекту, поэтому $collection.size() будет содержать значение.
$collection.size()
Массивы имеют специальный корпус и ведут себя как List, поэтому, хотя $array.length не работает, $array.size() работает.
List
$array.length
$array.size()
В более старых версиях Velocity (до 1.6) вы использовали ListTool и ArrayTool.
ListTool
ArrayTool
Цитата из руководства разработчика :
Object [] Обычный массив объектов, здесь не нужно много говорить.Velocity внутренне обернет ваш массив в класс, предоставляющий интерфейс Iterator, но это не должно касаться вас как программиста или автора шаблона.Более интересным является тот факт, что Velocity теперь позволяет авторам шаблонов обрабатывать массивы как списки фиксированной длины (начиная с Velocity 1.6).Это означает, что они могут вызывать такие методы, как size (), isEmpty () и get (int) как для массивов, так и для стандартных экземпляров java.util.List, не заботясь о разнице.
Итак, используя size() одинаково хорошо работает на java.util.List и массивах Java.
size()
java.util.List