如何使用Web服务作为数据源的子报表在Jasper Reports

时间:2016-03-10 06:54:41

标签: java jasper-reports

有人可以发布一个如何使用Web服务作为数据源定义子报表的工作示例吗?

我正在读这个:

http://community.jaspersoft.com/project/web-service-data-source

在" SubReport和Additional Datasets"部分下,我需要满足(2)的情景:

  

你有一个你希望循环的主结果集,以及你想要执行新查询的每一行(webservice call)

     

在子报表配置(或数据集)中,指定根本不使用任何连接(保留空白连接表达式和数据源表达式。我们唯一要做的就是为内部传递一些必需参数webservice数据源正常工作:

     
      
  • uriKeyauth
  •   
  • TypeKey
  •   
  • authParametersKey
  •   
  • languageKey
  •   
  • verbKey
  •   

根据以上陈述,我无法理解这里要做什么。这些参数在Web服务子报表中定义。我应该把它们传回主报告吗?如果是这样我怎么能在Jaspersoft Studio中做到这一点?我使用的是6.2版。即使我在主报表中定义了这些参数,当我运行预览时,我收到错误:

  

引起:net.sf.jasperreports.engine.JRException:动词应为POST或GET。不是有效的动词

2 个答案:

答案 0 :(得分:1)

经过一段时间的努力,我找到了以下内容。

在我的例子中,主报表中的默认数据适配器是JDBC。对于从SQL查询返回的每一行,一个特定的列值用作Web服务数据适配器或WebServiceQuery的GET参数。

我无法使用子报表进行此操作。但是,我可以使用与表关联的数据集。

必须创建使用Web服务数据适配器的数据集。需要在数据集中定义GET参数所需的参数。

创建数据集后,使用此数据集创建表或其他元素。在表属性中的数据集选项卡下,定义应具有相关字段值的参数(例如,$ F {field1})。

Web服务数据集还需要连接到主数据集。所有这一切都是在主报告中定义Web服务参数:uriKey,authTypeKey,authParametersKey,languageKey,verbKey。

完成此操作后,预览主报表还将呈现包含从Web服务数据适配器获取的结果的表。

答案 1 :(得分:0)

我在Jasper Studio 6.3中使用的步骤是:

  1. 创建子报表将使用的Web服务数据适配器。
  2. 使用上下文菜单,将数据适配器导出到工作区中的文件。
  3. 在用作子报表的报表属性中,将默认数据适配器设置为导出的文件。
  4. 将适当的参数从主报告传递到子报告。