如何获取服务器上某些子报表的 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 报告的文件资源上传
)
- apwop) 没有协议前缀的绝对回购路径,例如
/repo/path/subreport.jrxml
- apwp) 带有协议前缀的绝对回购路径,例如
repo:/repo/path/subreport.jrxml
- rpwop) 没有协议前缀的相对 repo 路径,例如
subreport-attached.jrxml
- rpwp) 带有协议前缀的相对回购路径,例如
repo:subreport-attached.jrxml
我还尝试了以下与在网络其他地方找到的上述 uri 变体没有成功:
JRXmlLoader:
JRXmlLoader.load(
new DefaultRepositoryService(
DefaultJasperReportsContext.getInstance()
).getInputStream( subrepPath )
RepositoryUtil:
RepositoryUtil.getInstance(
DefaultJasperReportsContext.getInstance()
).getInputStreamFromLocation( subrepPath )
- JasperServerUtil:类似于this I am still trying out and will report back (had problems with proper Maven jasperserver libraries support till now - other problem I may address in another question)
- 更新:有效:请参阅下面我的回答
哇哦! :) 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()
噗!难产。
在本地我有一个 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 报告的文件资源上传
)
- apwop) 没有协议前缀的绝对回购路径,例如
/repo/path/subreport.jrxml
- apwp) 带有协议前缀的绝对回购路径,例如
repo:/repo/path/subreport.jrxml
- rpwop) 没有协议前缀的相对 repo 路径,例如
subreport-attached.jrxml
- rpwp) 带有协议前缀的相对回购路径,例如
repo:subreport-attached.jrxml
我还尝试了以下与在网络其他地方找到的上述 uri 变体没有成功:
JRXmlLoader:
JRXmlLoader.load( new DefaultRepositoryService( DefaultJasperReportsContext.getInstance() ).getInputStream( subrepPath )
RepositoryUtil:
RepositoryUtil.getInstance( DefaultJasperReportsContext.getInstance() ).getInputStreamFromLocation( subrepPath )
- JasperServerUtil:类似于this I am still trying out and will report back (had problems with proper Maven jasperserver libraries support till now - other problem I may address in another question)
- 更新:有效:请参阅下面我的回答
哇哦! :) 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()
噗!难产。