2016-06-22 2 views
2

ローカル私はmaster.jrxmlのレポートとsubreport.jrxmlを持っており、スクリプトレットコードでReportDesign design = JRXmlLoader.load("/local-file-dir/path/to/subreport.jrxml")経由でサブレポートをロードして操作することができます。スクリプトレットベースの変更のために、サーバー上の一部のサブレポートのReportDesignクラスを取得するにはどうすればよいですか?

サーバーで

、(私のmaster.jrxmlでtrigged)上記のloadメソッドは明らかに関係なく、私は(基本的にnet.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: ...)しようとしたものを、レポパスに対処することはできません

subreport.jrxmlJRXMLファイルリソースとしてアップロード - ありませんとして目に見えないように作成したフォルダ構造を持つレポート;私のmaster.jrxmlレポート のファイルリソースとしてアップロード subreport-attached.jrxml

  • apwop)絶対プレフィックスのない絶対レポパス。 /repo/path/subreport.jrxml
  • apwp)絶対プレフィックス付きのレポパス。 repo:/repo/path/subreport.jrxml
  • rpwop)プロトコルプレフィックスなしの相対レポパス。 subreport-attached.jrxml
  • rpwp)プロトコルプレフィックス付きの相対レポパス。

    • JRXmlLoader

      JRXmlLoader.load(
          new DefaultRepositoryService( 
          DefaultJasperReportsContext.getInstance() 
      ).getInputStream(subrepPath) 
      
    • RepositoryUtil成功せずにウェブの他の場所で見られるようなrepo:subreport-attached.jrxml

    は、私はまた、上記のURIの亜種で、以下を試してみました:

    RepositoryUtil.getInstance( 
        DefaultJasperReportsContext.getInstance() 
    ).getInputStreamFromLocation(subrepPath) 
    
  • JasperServerUtilthisに類似を私はまだ試していますし、戻って報告します(適切なMavenのjasperserverライブラリに問題が今までサポートしていた - 私はanother questionに対処することができる他の問題を)
    • アップデート:それが働いた:

答えて

1

Woohoo下記の私の答えを参照してください! :) 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() 

Puh!ハード出産。

関連する問題