因此,我从我的数据库中获取DAO列表,然后将JRBeanCollectionDataSource传递给fill方法。这有效(制作一个空PDF)。
public void reportTest() {
AwardDAO awardDAO = new AwardDAOImpl();
List<Award> awards = null;
try{
awards = awardDAO.getAllAwards();
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(awards);
JasperReport jasperReport =
JasperCompileManager.compileReport("src/main/resources/hellojasper.jrxml");
Map parameters = new HashMap();
parameters.put("title", "Award Report");
JasperPrint jasperPrint =
JasperFillManager.fillReport(jasperReport, parameters, ds);
JasperExportManager.exportReportToPdfFile(
jasperPrint, "Awards.pdf");
}
catch (Exception e){
e.printStackTrace();
}
}
我不知道如何处理.jrxml文件中的信息。我已经搜索了一段时间,但我只是更加困惑。 我想要显示一个简单的表格。 谢谢!
答案 0 :(得分:0)
您必须在Award中的jrxml相应的getter中声明字段,并在report的textField表达式中使用此字段。就是这样 见例子
stackoverflow.com/questions/21432871/accessing-the-only-java-bean-passed-to-jasper-records
P.S。您确定reportTest。类在您的应用中了解路径“ src /main/resources/hellojasper.jrxml”吗?
答案 1 :(得分:0)
确保您的Award类具有您希望在PDF文件中显示的每个字段的getter和setter。
例如,如果我想显示带有以下字段的Product类:
<field name="productName" class="java.lang.String">
<field name="quantity" class="java.lang.String">
<field name="unitPrice" class="java.lang.String">
<field name="total" class="java.lang.String">
我可以使用POJO来表示Product类:
public class Product {
private String productName;
private String quantity;
private String unitPrice;
private String total;
public void setProductName(String productName){
this.productName = productName;
}
public String getProductName(){return productName;}
public void setQuantity(String quantity){
this.quantity = quantity;
}
public String getQuantity(){return quantity;}
public void setUnitPrice(String unitPrice){
this.unitPrice = unitPrice;
}
public String getUnitPrice(){return unitPrice;}
public void setTotal(String total){
this.total = total;
}
public String getTotal(){return total;}
}
然后我可以创建一个JRBeanCollectionDataSource:
List<Product> products = new ArrayList<Product>();
// Code to fill products
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(products);