为什么 javabean 数据源返回错误?

Why is javabeans data source returning error?

我正在学习本教程: http://javabeansinjasper.blogspot.com/

我在 iReport 上测试 java beans 数据源时遇到困难。我已经通过 mvn package 打包了我的应用程序 jar 并将其添加到 iReport classpath.

我的工厂 class 是这样的:

public class JasperReportFactory {

    private static Vector proposalReports;

    public static void setProposalReports(ProposalReport report) {
        proposalReports = new Vector();
        proposalReports.add(report);
    }

    public static Collection getProposalReports() {
        return proposalReports;
    }
}

但我收到以下错误:

The method don't return a valid Array or java.util.Collection!

任何想法将不胜感激!

您的 JasperReportFactory.getProposalReports() 正在返回 null

iReport 调用 JasperReportFactory.getProposalReports() 但没有先调用 public static void setProposalReports(ProposalReport report)

解决方案:

您需要确保您的 private static Vector proposalReports; 不是 null(事实上在博客中您提供的是他们在 getStudentList() 中创建 Vector)

例子

public static Collection getProposalReports() {
    if (proposalReports==null){
        setProposalReports(new ProposalReport()) //mockup for iReport
    }
    return proposalReports;
}

虽然发布说明 Vector 是旧的 java 1.4,但您应该考虑使用带有类型定义的 List

private static List<ProposalReport> proposalReports;

Why is Java Vector class considered obsolete or deprecated?