2010-12-29 9 views
0

Springを使用してJasper ReportsでPDFレポートを生成しようとしています。しかし、レポートは常に空です。私は多くを検索し、問題を見つけることができませんでした。バイト[] pdfReportをOutputStreamに書き込もうとしましたが、結果は同じですが、レポートは常に空です。JasperはSpring ModelAndViewを使用して空のPDFレポートの問題を報告します

私は2つのパラメータがtestNameであり、そのうちの1つがグラフです。どちらもpdfレポートで表示できません。

ありがとうございました。

ここではレポートを生成するコードを示します。

//My class extends MultiActionController 

DefaultPieDataset dataset = new DefaultPieDataset(); 

dataset.setValue(String.format("%s, %s", "pie1", "pie1"),20); 
dataset.setValue(String.format("%s, %s", "pie2", "pie2"),80); 

JFreeChart chart = ChartFactory.createPieChart("testPie", dataset, true, true, false); 

Map model = new HashMap(); 
model.put("chart", chart.createBufferedImage(200, 200)); 
model.put("testName", "test report"); 
model.put("format", "pdf"); 

AbstractJasperReportsView view = new JasperReportsMultiFormatView(); 
view.setUrl("/WEB-INF/classes/reports/"+"test1"+".jasper"); 
view.setApplicationContext(getApplicationContext()); 
view.setContentType("application/pdf"); 

Properties header = new Properties(); 
view.setHeaders(header); 

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; 

そしてここ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="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

は、なぜあなたは次のことをやっているの?

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ファイルとレポートデータキーを宣言する必要があります。

私はあなたが私が春3 MVCのために書いたこのガイドをチェック示唆 - ジャスパー統合のチュートリアル:代わりに)だけでJasperReportsMultiFormatViewを(使用するようにビューを変更 http://krams915.blogspot.com/2010/12/spring-3-mvc-jasper-integration.html

を。

詳細については、チュートリアルのセクションを確認してください。後で時間がある場合は、JasperReportsMultiFormatView()を使用してチュートリアルを作成します。もし明日でなければ。これがあなたに役立つかどうか私に教えてください。

+0

返信いただきありがとうございます。私は不要なコードを削除しましたが、結果は同じですが、pdfは空です。私は、レポートデータキーがリソースバンドルで宣言されている必要があることを知りません。私はiReportsでjrxmlファイルを生成し、それをMavenでコンパイルして使用します。レポートデータキーについて詳しく教えてください。あなたのチュートリアルは非常に役立ちます、私はそれらを読み続けるでしょう。 – jiraiya

+0

ようこそ。あなたは新しいコードとリソースバンドルを宣言する方法をここに投稿できますか? iReportsからJRXMLファイルを生成するときは、手動で何かを編集する必要があります。 – chris

+0

JasperReportsMultiFormatViewを使用してチュートリアルを追加しました。http://krams915.blogspot.com/2010/12/spring-mvc-3-jasper- how-to-use.html – chris

1

「whenNoDataType」と呼ばれるジャスパーレポートにプロパティがあります。あなたはそれを に設定しようとしましたか?NoDataType = "AllSectionsNoDetail"

レポート言語は「groovy」としています。どうして?

+0

iReportをデフォルトで使用する場合は、Groovyが使用されます。手動で変更する必要があります。私はそれが空白であるか、少なくとも私達に言語を選ぶように促すなら、それが良いと思う – chris

関連する問題