父和子的報告我有兩個域代碼:春碧玉集成使用型號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查詢上嘗試這個父子和子報表都可以正常工作,但是當我將其更改爲模型時,它會中斷。