Jasper сообщает о проблеме с пустым PDF-отчетом, используя Spring ModelAndView - PullRequest
0 голосов
/ 29 декабря 2010

Я пытаюсь создать отчет в формате PDF с помощью Jasper Reports, используя Spring.Но отчет всегда пуст.Я много искал и не мог найти проблему.Я пытался записать byte [] pdfReport в OutputStream, но результат тот же, отчет всегда пуст.

У меня есть 2 параметра, один из которых - testName, а один из них - chart.Оба не могут отображаться в отчете pdf.

Большое спасибо за вашу помощь,

Вот код, который генерирует отчет.1010 *

<?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="test1" language="groovy" pageWidth="700" pageHeight="842" columnWidth="660" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
    <property name="ireport.zoom" value="1.0"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="2"/>
    <parameter name="testName" class="java.lang.String"/>
    <parameter name="chart" class="java.awt.Image" isForPrompting="false"/>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="48" splitType="Stretch"/>
    </title>
    <pageHeader>
        <band height="35" splitType="Stretch"/>
    </pageHeader>
    <columnHeader>
        <band height="14" splitType="Stretch"/>
    </columnHeader>
    <detail>
        <band height="229" splitType="Stretch">
            <image>
                <reportElement x="162" y="13" width="200" height="200"/>
                <imageExpression class="java.awt.Image"><![CDATA[$P{chart}]]></imageExpression>
            </image>
            <textField>
                <reportElement x="37" y="61" width="100" height="20"/>
                <textElement/>
                <textFieldExpression class="java.lang.String"><![CDATA[$P{testName}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
    <columnFooter>
        <band height="112" splitType="Stretch"/>
    </columnFooter>
    <pageFooter>
        <band height="76" splitType="Stretch"/>
    </pageFooter>
    <summary>
        <band height="42" splitType="Stretch"/>
    </summary>
</jasperReport>

Ответы [ 2 ]

2 голосов
/ 29 декабря 2010

Почему вы делаете следующее?

ModelAndView mv = new ModelAndView(view, model);

JasperReport report =  (JasperReport) JRLoader.loadObject(getServletContext().getResourceAsStream("/WEB-INF/classes/reports/"+"test1"+".jasper"));

JasperPrint prt = JasperFillManager.fillReport(report, model);
byte[] pdfReport = JasperExportManager.exportReportToPdf(prt);

return mv;

Использование JasperReportsMultiFormatView () уже объединяет заполнение и экспорт отчета. Нет необходимости в следующем:

JasperReport report =  (JasperReport) JRLoader.loadObject(getServletContext().getResourceAsStream("/WEB-INF/classes/reports/"+"test1"+".jasper"));

JasperPrint prt = JasperFillManager.fillReport(report, model);
byte[] pdfReport = JasperExportManager.exportReportToPdf(prt);

Вы должны объявить файл JRXML и ключ данных отчета в комплекте ресурсов.

Предлагаю вам проверить это руководство, которое я написал для Spring 3 MVC - руководство по интеграции с Jasper: http://krams915.blogspot.com/2010/12/spring-3-mvc-jasper-integration.html

Просто измените представления, чтобы использовать вместо них JasperReportsMultiFormatView ().

Обратитесь к разделу Учебники за дополнительной информацией. Если у меня будет время позже, я сделаю учебник, используя JasperReportsMultiFormatView (). Если не может быть завтра. Дайте мне знать, если это поможет вам.

1 голос
/ 07 января 2011

В отчете яшмы есть свойство 'whenNoDataType'.Вы пробовали установить для него значение whenNoDataType = "AllSectionsNoDetail"

Также язык отчета указан как "groovy".Почему?

...