我不知道如何在jasper报告中使用Grails呈现列表属性
我的域类看起来像这样:
class Project {
String name
String division
List divisions
String toString(){
"$name"
}
static hasMany = [divisions : Division ]
...
分区域类来到这里
class Division {
String name
String divisionResponsible
String createDate
...
项目控制器看起来像这样
class ProjectController {
def scaffold = true
def index = {
redirect(action : list)
}
def createReport = {
def projectreport = Project.getAll([params.project_id])
chain(controller:'jasper',action:'index',model:[data:projectreport],params:params)
}
}
我用iReport创建了一个jasper报告,效果很好。我添加了列表中的字段,并通过访问例如$ F {name},但我不知道如何添加分区列表。我想要一个每行一个元素的列表。
UPDATE 添加了jrxml文件:
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="books" language="groovy" pageWidth="595" pageHeight="842" columnWidth="535" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="589a675d-513d-46ec-9006-3fa969e8706c">
<property name="ireport.zoom" value="2.4793388429752063"/>
<property name="ireport.x" value="193"/>
<property name="ireport.y" value="397"/>
<style name="table">
<box>
<pen lineWidth="1.0" lineColor="#000000"/>
</box>
</style>
<style name="table_TH" mode="Opaque" backcolor="#F0F8FF">
<box>
<pen lineWidth="0.5" lineColor="#000000"/>
</box>
</style>
<style name="table_CH" mode="Opaque" backcolor="#BFE1FF">
<box>
<pen lineWidth="0.5" lineColor="#000000"/>
</box>
</style>
<style name="table_TD" mode="Opaque" backcolor="#FFFFFF">
<box>
<pen lineWidth="0.5" lineColor="#000000"/>
</box>
</style>
<subDataset name="Table Dataset 1" uuid="b86e8ec3-65e5-4049-a20a-196817cb20f9"/>
<subDataset name="dataset1" uuid="92950e66-e6cf-4276-a35e-08a5874a7395"/>
<subDataset name="dataset2" uuid="8f6281e8-ec37-4c7a-896d-f70ffe464372"/>
<parameter name="id" class="java.lang.String" isForPrompting="false">
<defaultValueExpression><![CDATA["<parameter error>"]]></defaultValueExpression>
</parameter>
<queryString>
<![CDATA[]]>
</queryString>
<field name="internet" class="java.lang.String"/>
<field name="projectResponsible" class="java.lang.String"/>
<field name="name" class="java.lang.String"/>
<field name="criticality" class="java.lang.String"/>
<field name="notes" class="java.lang.String"/>
<field name="id" class="java.lang.String"/>
<field name="divisions" class="java.lang.String"/>
<field name="projectStatus" class="java.lang.String"/>
<group name="Group1">
<groupHeader>
<band height="33">
<line>
<reportElement uuid="79864a95-d697-467e-bc50-8ef45a45d907" x="-20" y="32" width="595" height="1" forecolor="#666666"/>
</line>
<staticText>
<reportElement uuid="32eb2454-9c31-4af7-b7d2-2f1500d0f0b9" mode="Opaque" x="0" y="12" width="124" height="20" forecolor="#006699" backcolor="#E6E6E6"/>
<textElement textAlignment="Center">
<font size="14" isBold="true"/>
</textElement>
<text><![CDATA[Project status]]></text>
</staticText>
<textField>
<reportElement uuid="f4a48bf5-2347-48d8-90be-48ef1fc765d7" x="124" y="13" width="164" height="20" forecolor="#006699"/>
<textElement>
<font size="14" isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[$F{projectStatus}]]></textFieldExpression>
</textField>
</band>
</groupHeader>
<groupFooter>
<band/>
</groupFooter>
</group>
<group name="Group3">
<groupFooter>
<band/>
</groupFooter>
</group>
<group name="Group4">
<groupFooter>
<band/>
</groupFooter>
</group>
<background>
<band/>
</background>
<title>
<band height="72">
<frame>
<reportElement uuid="d6921c84-754f-47f8-8e1c-ed5296807395" mode="Opaque" x="-20" y="-20" width="595" height="92" backcolor="#FFFFFF"/>
<staticText>
<reportElement uuid="f9a14771-1465-4f54-ba47-0fa5297df8df" x="20" y="20" width="245" height="33" forecolor="#006699"/>
<textElement>
<font size="24" isBold="true"/>
</textElement>
<text><![CDATA[Project Report]]></text>
</staticText>
<image>
<reportElement uuid="3de03b7e-39e1-4b64-bde9-0a663fea3cc6" x="279" y="16" width="306" height="76"/>
<imageExpression><![CDATA["C:\\Users\\Guest\\Desktop\\Logo.png"]]></imageExpression>
</image>
</frame>
</band>
</title>
<pageHeader>
<band height="13"/>
</pageHeader>
<columnHeader>
<band height="21">
<staticText>
<reportElement uuid="f2fa74e2-9914-4bfa-872b-6afb705b016c" mode="Opaque" x="0" y="0" width="124" height="20" forecolor="#006699" backcolor="#E6E6E6"/>
<textElement textAlignment="Center">
<font size="14" isBold="true"/>
</textElement>
<text><![CDATA[Project]]></text>
</staticText>
<line>
<reportElement uuid="c5c5d539-6b26-4467-befe-de4a4adc28fe" x="-20" y="20" width="595" height="1" forecolor="#666666"/>
</line>
<textField>
<reportElement uuid="ff2c3497-9ef4-4546-b1b0-d9e44f8944af" x="124" y="1" width="164" height="20" forecolor="#006699"/>
<textElement>
<font size="14" isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
</textField>
</band>
</columnHeader>
<detail>
<band height="194">
<staticText>
<reportElement uuid="eb8ac25a-7d64-41f8-9e72-04103fd7d9c1" mode="Opaque" x="0" y="23" width="124" height="20" forecolor="#006699" backcolor="#E3E3E3"/>
<textElement>
<font size="14" isBold="true"/>
</textElement>
<text><![CDATA[Project Resonsible]]></text>
</staticText>
<textField>
<reportElement uuid="aee33b53-790c-4749-ba9e-b83a7752af74" mode="Opaque" x="124" y="23" width="164" height="20" forecolor="#006699" backcolor="#E3E3E3"/>
<textElement>
<font size="12" isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[$F{projectResponsible}]]></textFieldExpression>
</textField>
<staticText>
<reportElement uuid="42af2015-ef1f-4f81-996f-238030838ad2" mode="Opaque" x="0" y="43" width="124" height="20" forecolor="#006699" backcolor="#FFFFFF"/>
<textElement>
<font size="14" isBold="true"/>
</textElement>
<text><![CDATA[Criticality]]></text>
</staticText>
<textField>
<reportElement uuid="7cf09291-11fc-4cff-a7b4-a07722c8953b" x="124" y="43" width="164" height="19" forecolor="#006699"/>
<textElement>
<font size="12" isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[$F{criticality}]]></textFieldExpression>
</textField>
<staticText>
<reportElement uuid="8c4c1f4e-a5ac-4600-af3b-6a2f74b17b5f" mode="Opaque" x="0" y="62" width="124" height="20" forecolor="#006699" backcolor="#E3E3E3"/>
<textElement>
<font size="14" isBold="true"/>
</textElement>
<text><![CDATA[Notes]]></text>
</staticText>
<textField>
<reportElement uuid="4d7b1e31-33a0-4c5b-9576-9ca9221ab2f3" mode="Opaque" x="124" y="62" width="164" height="20" forecolor="#006699" backcolor="#E3E3E3"/>
<textElement>
<font size="12" isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[$F{notes}]]></textFieldExpression>
</textField>
<line>
<reportElement uuid="9721dd86-1744-40eb-a378-87e8b00acb06" x="0" y="93" width="555" height="1"/>
</line>
<staticText>
<reportElement uuid="3622cfdb-db15-4fe6-8d9c-30d6bd51a4df" mode="Opaque" x="0" y="94" width="555" height="20" forecolor="#006699" backcolor="#E6E6E6"/>
<textElement>
<font size="14" isBold="true"/>
</textElement>
<text><![CDATA[Divisions]]></text>
</staticText>
</band>
</detail>
<columnFooter>
<band/>
</columnFooter>
<pageFooter>
<band height="17">
<textField>
<reportElement uuid="e963f52c-256f-42ce-bf06-5abeaae6532a" mode="Opaque" x="0" y="4" width="515" height="13" backcolor="#E6E6E6"/>
<textElement textAlignment="Right"/>
<textFieldExpression><![CDATA["Page "+$V{PAGE_NUMBER}+" of"]]></textFieldExpression>
</textField>
<textField evaluationTime="Report">
<reportElement uuid="4aa95590-464b-4759-9865-201021b8d77c" mode="Opaque" x="515" y="4" width="40" height="13" backcolor="#E6E6E6"/>
<textElement/>
<textFieldExpression><![CDATA[" " + $V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
<textField pattern="EEEEE dd MMMMM yyyy">
<reportElement uuid="f5f6139c-b44e-4354-8216-29550ebbcdd0" x="0" y="4" width="100" height="13"/>
<textElement/>
<textFieldExpression><![CDATA[new java.util.Date()]]></textFieldExpression>
</textField>
</band>
</pageFooter>
<summary>
<band/>
</summary>
更新2:
我设法通过在jasper报告中使用以下变量来访问列表元素
$F{divisions.[0].name}
$F{divisions.[1].name}
问题是现在这在实际报告中并不真正可用,因为我不知道列表中有多少元素。
有没有办法迭代jasper报告中的列表元素?
答案 0 :(得分:0)
您是否尝试过使用
<printWhenExpression><![CDATA[$F{data}.get(0) != null]]></printWhenExpression>
<textFieldExpression><![CDATA[$F{data}.get(0).name]]></textFieldExpression>
分裂:
<printWhenExpression><![CDATA[$F{data}.get(0).divisions != null && $F{data}.get(0).divisions.get(0) != null]]></printWhenExpression>
<textFieldExpression><![CDATA[$F{data}.get(0).divisions.get(0).name]]></textFieldExpression>