Spring Jasper使用SQL查询旁边的模型与父报表和子报表集成
我有两个域代码:Spring Jasper使用SQL查询旁边的模型与父报表和子报表集成,spring,jasper-reports,sql,Spring,Jasper Reports,Sql,我有两个域代码: public class domain1{ private string domain1Name; private List<domain2> domain2List; /* getter setter */ } public class domain2{ private string domain2Name; /* getter setter */ } 公共类域1{ 私有字符串domain1Name; 私有列表域2列表; /*吸气剂设定器*/ } 公共
public class domain1{
private string domain1Name;
private List<domain2> domain2List;
/* getter setter */
}
public class domain2{
private string domain2Name;
/* getter setter */
}
公共类域1{
私有字符串domain1Name;
私有列表域2列表;
/*吸气剂设定器*/
}
公共类域2{
私有字符串域名;
/*吸气剂设定器*/
}
我有一个Spring控制器返回一个映射,然后通过以下功能将其传递给模型:
@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
}
@SuppressWarnings(“未选中”)
@请求映射(“预览”)
公共字符串预览(模型){
列表=新的ArrayList();
域1 d1=新域1();
迭代器i=someData.Iterator()//
...
test_subreport.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>...
...<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个元素的列表
-域1您可以通过查看我的Spring3MVC和Jasper教程找到一些线索: 我提供了一个可下载的Maven版本。教程非常详细。此外,应用程序本身也有很好的注释。如果教程对您有帮助,请留下注释:)
...<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>...