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