如何获取服务器上某些子报表的 ReportDesign class 以进行基于脚本的修改?

How to get the ReportDesign class of some subreport on the server for scriptlet-based modifications?

在本地我有一个 master.jrxml 报告和一些 subreport.jrxml 并且可以通过 Scriptlet 代码中的 ReportDesign design = JRXmlLoader.load( "/local-file-dir/path/to/subreport.jrxml" ) 加载和操作子报告。

在服务器上,上面的加载方法(由我的master.jrxml触发)显然无法处理repo路径,不管我怎么试(基本上net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: ...

(subreport.jrxml 作为 JRXML 文件资源上传 - 而不是作为 Report 具有不可见创建的文件夹结构; subreport-attached.jrxml 作为我的 master.jrxml 报告的文件资源上传 )

我还尝试了以下与在网络其他地方找到的上述 uri 变体没有成功:

哇哦! :) com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService 的最后一种方法是这样工作的:

JasperDesign design = JRXmlLoader.load(
   ( (RepositoryService) StaticApplicationContext.getApplicationContext()
     .getBean( "repositoryService" ) 
   )
   .getResourceData( JasperServerUtil.getExecutionContext() , 
     "repo:/some/where/subreport.jrxml" )
   .getDataStream()

噗!难产。