使用spring 2.5在服务层中加载.jasper

时间:2011-04-25 23:23:18

标签: java spring jasper-reports

我正在开发一个带有maven,spring 2.5和其他一些技术的Web应用程序。 应用程序由3层dao服务和web组成,dao和服务打包为jar,用作我的Web应用程序的库,最后打包为耳朵,这是最终的结构。

   myappp.ear 
       --mywebapp.war
         --lib
            --dao.jar
            --service.jar

到目前为止,我已在views.xml文件中定义的Web层中部署了报告(.jasper)。现在我正在尝试将我的报告移至服务中。我遇到的问题是a无法加载我的报告。这是一个示例代码

public class myreportingservice{
      private InputStream report;

      @autowired
      public void setReport(InputStream report){
            this.report = report;
      }
    //THE CODE THAT EJECUTES THE REPORT.

}

这是发布配置的xml。

<beans xmlns .........

     <bean id="formatoTiempoEnProcesos" class="java.io.FileInputStream">
    <constructor-arg value="c:/evaluacionDeProveedores.jasper">     </constructor-arg>
     </bean>

</beans>

正如你在* 构造函数arg * 中看到的那样,它写的是整个路径并且它很好,但是如果我想使用相对路径bean无法加载,我试过有了这个 “classpath:/reportes/evaluacionDeProveedores.jasper”和“/reportes/evaluacionDeProveedores.jasper”以及许多方法,但现在我只是得到错误。

希望有人可以帮助我。

1 个答案:

答案 0 :(得分:2)

classpath:/relative/path应解析为Resource,因此请将您的bean字段从InputStream更改为org.springframework.core.io.Resource。然后,您可以在资源上调用.getInputStream()