在Grails的Jasper中使用集合作为参数

时间:2011-09-04 20:26:37

标签: grails jasper-reports jasper-plugin

我正在尝试学习如何使用jasper插件从grails应用程序中运行Jasper。在插件目录页面[http://grails.org/plugin/jasper]上有一个相当深入的教程。这应该向您展示如何扩展'racetrack'示例以使用jasper插件。我发现的问题是,由于'registrations.jrxml'没有在教程中显示,也没有附带插件的源代码 - 我不可能弄清楚如何设置jrxml文件工作将数据从grails发送给它。

现在,我的应用程序的控制器正在将一个HashMaps的ArrayList发送回视图,然后使用“g:each”将其转换为html表。它不是域的简单表示,HashMaps是由几个不同的数据源构成的。我还需要通过Jasper将这些数据导出到XLS文件中。现在我可以将jrxml作为参数发送给ArrayList,但是当我将List的每个成员(一行)与jrxml中的Detail相关联时,我无处可去。

因此,对于最简单的情况,我说有一个控制器,它提供一个带有字符串ArrayList的视图

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作为我的数据源?

1 个答案:

答案 0 :(得分:1)

您需要JRBeanCollectionDataSource。在控制器中(或在您的自定义标签中)构造它。你不能直接在gsp中做到。