2010-11-25 24 views
0

父和子的報告我有兩個域代碼:春碧玉集成使用型號SQL的旁邊查詢

public class domain1{ 

private string domain1Name; 
private List<domain2> domain2List; 

/* getter setter */ 
} 

public class domain2{ 

private string domain2Name; 

/* getter setter */ 
} 

和我有一個春天控制器返回一個地圖,然後把它傳遞給用下面的函數模型:

@SuppressWarnings("unchecked") 
    @RequestMapping("preview") 
    public String preview(Model model) { 
      List<Domain1> list = new ArrayList<Domain1>(); 
      Domain1 d1 = new Domain1(); 
      Iterator i = someData.iterator(); //<--this function successfully retrieve data, not null guaranted. 
     while(i.hasNext()){ 
       Map.Entry me = (Map.Entry)i.next(); 
       d1 = (Domain1) me.getValue(); 
       list.add(d1); 
     } 

     Map mapz = new HashMap(); 
     mapz.put("domain1List", list); // first value as Domain1 
     mapz.put("domain2List", d1.getDomain2List()); // second value as Domain2 
     model.addAllAttributes(mapz); 

     return "test_parentreport"; <- jasper bean lookup views from views.xml 
    } 

views.xml

<bean id="test_parentreport" 
    class="org.springframework.web.servlet.view.jasperreports.JasperReportsPdfView" 
    p:url="/WEB-INF/jasper/test_parentreport.jrxml"> 
    <property name="headers"> 
     <props> 
      <prop key="Content-Disposition"> 
       attachment; filename=test_parentreport.pdf 
      </prop> 
     </props> 
    </property> 
    <property name="subReportUrls"> 
     <map> 
      <entry key="test_subreport" value="/WEB-INF/jasper/test_subreport.jrxml"/> 
     </map> 
    </property> 
</bean> 

test_parentreport.jrxml

...<field name="domain1Name" class="java.lang.String"/><detail><band height="125" splitType="Stretch"> 
     <textField> 
      <reportElement x="0" y="0" width="555" height="51"/> 
      <textElement/> 
      <textFieldExpression class="java.lang.String"><![CDATA[$F{domain1Name}]]></textFieldExpression> 
     </textField> 
     <subreport> 
      <reportElement positionType="Float" x="0" y="0" width="555" height="125" isPrintWhenDetailOverflows="true"/> 
      <subreportExpression class="net.sf.jasperreports.engine.JasperReport"><![CDATA[$P{test_subreport}]]></subreportExpression> 
     </subreport> 
    </band> 
</detail>... 

test_subreport.jrxml

...<field name="domain2Name" class="java.lang.String"/> 
<detail> 
    <band height="125" splitType="Stretch"> 
     <textField> 
      <reportElement x="71" y="13" width="100" height="20"/> 
      <textElement/> 
      <textFieldExpression class="java.lang.String"><![CDATA[$F{domain2Name}]]></textFieldExpression> 
     </textField> 
    </band> 
</detail> 
<noData> 
    <band height="50"> 
     <staticText> 
      <reportElement x="0" y="0" width="555" height="20"/> 
      <textElement textAlignment="Center"/> 
      <text><![CDATA[NODATA ]]></text> 
     </staticText> 
    </band> 
</noData>... 

我的問題是:

想象Domain1.class僅包含一個元素,它帶來了包含2個元素的列表,

-Domain1 < - - 我想填寫這個test_parentreport.jrxml作爲父母報告 --Domain2 --Domain2 < - 我想要fi這兩個上test_subreport.jrxml

當我只把1地圖上的控制器,該報告worksfine在父,但返回沒有數據的子報表 當我把兩個地圖上的控制器,報告顯示空白的父母和子報告

我錯過了什麼?請給我一個線索 這個想法是使用SQL/SQL查詢旁邊的域/模型來填充父和子報表,我在SQL查詢上嘗試這個父子和子報表都可以正常工作,但是當我將其更改爲模型時,它會中斷。

回答

0

您可能會發現通過檢查我的教程爲Spring MVC 3和賈斯珀一些線索:

我提供的可下載Maven構建。教程非常詳細。另外,應用程序本身也有很好的評論。只要留下評論,如果教程幫助你:)

http://krams915.blogspot.com/p/tutorials.html