2

谁能帮我一步一步地在 Jaspersoft 服务器中添加一个 Bean 数据源(bean 的集合)?是否有一个简单的过程来推送 jarfile 以便服务器可以识别它?

这是我所做的步骤(简化名称)

在 Studio 项目中

  • 创建一个名为Person的 Java Bean ,其中包含字段和 getter/setter

  • 创建一个简单的 Java 类,它连接到名为com.company.test.PersonFactory的数据库,它有一个返回List的方法generator(),它使用简单的 jdbc 调用,这两个类都在我的 Jasper 项目中

  • 创建了一个名为testBean的数据适配器,并输入com.company.test.PersonFactory作为工厂类和生成器作为工厂中的静态方法。

  • 创建一个新的 jasper 报告(testReport1)并使用 Data Adapter testBean,单击 Java Bean 选项卡,输入Person作为类名,添加所有字段,验证数据预览,并保存

在存储库资源管理器中

  • 创建一个新的数据源 > 数据源 Bean,输入bean1作为名称和 id

  • 在 Bean Name 和 Bean method 页面,选择 import from Jaspersoft Studio 并选择testBean,点击完成

在 Studio 项目中

  • 验证 Jaspersoft Studio 中的数据预览工作正常后,在 Jasper Server 中发布报告

  • 选择bean1数据源并发布

在 Jaspersoft 服务器中

运行报告 testReport1

得到错误

org.springframework.beans.factory.NoSuchBeanDefinitionException:在 org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:575) 中没有定义名为“com.company.test.PersonFactory”的 bean

org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1111) 在

org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:276) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:191) 在 org.springframework.context.support。 AbstractApplicationContext.getBean(AbstractApplicationContext.java:1119) 在 com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.BeanReportDataSourceServiceFactory.createService(BeanReportDataSourceServiceFactory.java:76) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在……

任何人都可以帮助我完成有关如何在 Jaspersoft 服务器中识别 Beans 和 Factory 的最简单步骤吗?

谢谢

4

1 回答 1

1

我在最初的问题后一周解决了这个问题。我只是想分享答案:

jaspersoft Bean DataSource 应该通过实现ReportDataSourceService的类来访问。

然后,它应该有一个私有变量

private JRBeanCollectionDataSource dataSource;

此外,您需要覆盖 2 个方法

@Override
public void closeConnection() {
    // TODO Auto-generated method stub

}

@Override
public void setReportParameterValues(Map parameterMap) {
    parameterMap.put(JRParameter.REPORT_DATA_SOURCE, dataSource);

}

然后从 Jasper 服务器中,您需要定义工厂类,该工厂类调用您创建的 ReportDataSourceService实现类的构造函数,该类返回 ReportDataSourceService 类型

于 2016-09-27T06:40:01.643 回答