2014-11-03 31 views
0

嗨,我是新來jasper report.i'm使用ireport設計報告。 我創建了一個簡單的報表設計,其中有2個字段名稱addr。.jrxml to .jasper編譯錯誤字段未找到異常

public class R { 
    private String name; 
     private String addr; 

     public R(String name, String addr) { 
     super(); 
     this.name = name; 
     this.addr = addr; 
     } 
     public String getName() { 
     return name; 
     } 
     public void setName(String name) { 
     this.name = name; 
     } 
     public String getAddr() { 
     return addr; 
     } 
     public void setAddr(String addr) { 
     this.addr = addr; 
     } 
} 

的.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="R" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="4fd2f78e-344d-4371-ba1e-f86c2a81ef75"> 
    <property name="ireport.zoom" value="1.0"/> 
    <property name="ireport.x" value="0"/> 
    <property name="ireport.y" value="0"/> 
    <background> 
     <band splitType="Stretch"/> 
    </background> 
    <title> 
     <band height="79" splitType="Stretch"/> 
    </title> 
    <pageHeader> 
     <band height="35" splitType="Stretch"/> 
    </pageHeader> 
    <columnHeader> 
     <band height="61" splitType="Stretch"> 
      <staticText> 
       <reportElement x="296" y="41" width="228" height="20" uuid="19aa39a0-45cf-4b36-b327-25b640f81d8a"/> 
       <textElement textAlignment="Center"/> 
       <text><![CDATA[Address]]></text> 
      </staticText> 
      <staticText> 
       <reportElement x="36" y="41" width="215" height="20" uuid="baba8372-2215-439d-8b20-fd4ab054bbe5"/> 
       <textElement textAlignment="Center"/> 
       <text><![CDATA[Name]]></text> 
      </staticText> 
     </band> 
    </columnHeader> 
    <detail> 
     <band height="125" splitType="Stretch"> 
      <textField> 
       <reportElement x="296" y="0" width="228" height="20" uuid="c4de17e6-e5bc-4454-b38e-cc50acf18f0b"/> 
       <textFieldExpression><![CDATA[$F{addr}]]></textFieldExpression> 
      </textField> 
      <textField> 
       <reportElement x="36" y="0" width="215" height="20" uuid="8283d8b6-a288-48ec-bd4a-36c2875f5cff"/> 
       <textFieldExpression><![CDATA[$F{name}]]></textFieldExpression> 
      </textField> 
     </band> 
    </detail> 
    <columnFooter> 
     <band height="45" splitType="Stretch"/> 
    </columnFooter> 
    <pageFooter> 
     <band height="54" splitType="Stretch"/> 
    </pageFooter> 
    <summary> 
     <band height="42" splitType="Stretch"/> 
    </summary> 
</jasperReport> 

在這裏,我使用的數組列表作爲數據源。 當我點擊編譯按鈕,我報告它顯示錯誤

net.sf.jasperreports.engine.design.JRValidationException: Report design not valid :       1. Field not found : addr      2. Field not found : name 

Java代碼

public void runReport(String fileName, String outFileName) throws JRException 
    { 

     List<R> list = new ArrayList<R>(); 

     Map parameters = new HashMap(); 
     list.add(new R("a1" ,"a2")); 
     list.add(new R("b1" ,"b2")); 
     list.add(new R("c1" ,"c2")); 

     JasperPrint print = JasperFillManager.fillReport(fileName, parameters, new JRBeanCollectionDataSource(list)); 
       JRExporter exporter = new JRPdfExporter(); 
       exporter.setParameter(
       JRExporterParameter.OUTPUT_FILE_NAME,outFileName); 
       exporter.setParameter(
       JRExporterParameter.JASPER_PRINT, print); 
       JasperExportManager.exportReportToPdfFile(print, outFileName); 
       print = null; 
       exporter = null; 

     } 
+0

您尚未在您的JRXML中定義任何字段。這不是必要的嗎? – mkl 2014-11-03 08:53:46

回答

1

你應該添加到您的JRXML領域:

<field name="addr" class="java.lang.String"> 
    <fieldDescription><![CDATA[addr]]></fieldDescription></field> 

你可以這樣做通過點擊「字段」並選擇「創建字段」。

相關問題