Использование коллекций в качестве параметров в Jasper из Grails

Я пытаюсь узнать, как запустить Jasper из приложения Grails с помощью плагина jasper. На странице каталога плагинов [ http://grails.org/plugin/jasper ] есть довольно -учебник глубины. Который должен показать вам, как расширить пример «беговой дорожки», чтобы использовать плагин jasper. Проблема, которую я обнаружил, заключается в том, что, поскольку «registrations.jrxml» не показан в руководстве и не поставляется с исходной загрузкой плагина, я не могу понять, как настроить файл jrxml для работы. с данными, отправленными на него из Grails.

Прямо сейчас контроллер моего приложения отправляет ArrayList HashMaps обратно в представление, которые затем превращаются в html-таблицы с помощью «g:each». Это не простое представление домена, HashMaps создаются из нескольких разных источников данных. Мне также нужно экспортировать эти данные через Jasper в файл XLS. Прямо сейчас я могу отправить jrxml ArrayList в качестве параметра, но я никуда не денусь, когда дело доходит до корреляции каждого члена списка (строки) с деталью в jrxml.

Итак, для простейшего случая скажем, у меня есть контроллер, который предоставляет представление с ArrayList of Strings

def index = { 
        def people = ["Donald", "Richard", "Raymond", "Samir", "Cyrus"]

        [people: people, guy: "Frank"]
    }

и представление, которое передает ArrayList в Jasper в качестве параметра.

<g:jasperReport format="PDF" jasper="don2" name="Don Report">
    <input type="hidden" name="name" value="${guy}"/>
    <input type="hidden" name="list" value="${people}"/>
  </g:jasperReport>

Что мне нужно сделать в jrxml, чтобы использовать ArrayList в качестве источника данных?

Дон


person awfulHack    schedule 04.09.2011    source источник


Ответы (1)


Вам потребуется JRBeanCollectionDataSource. Создайте это в контроллере (или в своем пользовательском теге). Вы не можете сделать это непосредственно в gsp.

person Bozho    schedule 04.09.2011
comment
Я понимаю это, но в файле GSP я не могу просто вызвать JRBeanCollectionDataSource(CustomBeanFactory.getBeanCollection())); Я не понимаю, как вы могли бы сделать это конкретно в Grails. Является ли попытка сделать это с точки зрения проблемы? - person awfulHack; 05.09.2011
comment
вы не делаете этого в .gsp. Вы делаете это в контроллере .groovy - person Bozho; 05.09.2011
comment
Спасибо, Божо, с достаточным количеством возни я разобрался. - person awfulHack; 06.09.2011