можно ли использовать freemarker для вывода пользовательских коллекций? - PullRequest
1 голос
/ 07 января 2010

Можно ли использовать freemarker для циклического просмотра коллекций и вывода свойств каждого элемента в коллекции?

Свойства этой коллекции будут динамическими, то есть не могут быть жестко запрограммированы, будут сгенерированы из базы данных.

что я ищу: уметь указывать на разные базы данных, проходить по каждой таблице и выводить столбцы таблиц.

1 Ответ

2 голосов
/ 07 января 2010

Вероятно, хотя это зависит от того, в какой структуре находятся данные на земле Java. Freemarker обрабатывает основные операции над коллекциями (хэши, последовательности). Если у вас есть карта в Java, Freemarker позволит вам использовать ее как «хэш» (вы можете получить ее ключи напрямую), а списки в Java выглядят как «последовательности» во Freemaker.

Если бы вы имели, скажем, в Java, List<List<String>>, представляющий список таблиц, то вы могли бы просматривать их в FTL как:

<#-- getMyTables() is a call into the primary template model object -->
<#assign myTables = getMyTables() />
<#list myTables as table>
  <#list table as column>
    ${column}
  </#list> 
</#list>

Если ваши коллекции представляют собой пользовательские классы, которые не реализуют интерфейсы List или Map, то вы, конечно, можете просто напрямую обращаться к их методам (Freemarker поддерживает прямой доступ к методам в своей модели шаблона и ко всему, что вы можете получить из шаблона модель). Э.Г.

<#-- getMyTablesAsList() is a call into the primary template model object -->
<#assign myTables = getMyTablesAsList() />
<#list myTables as table>
  <#list table.getColumnNames() as column>
    ${column}
  </#list> 
</#list>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...