Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用带Spring 4.x的JasperReportsViewResolver将pdf保存在磁盘上_Java_Spring_Spring Mvc_Jasper Reports - Fatal编程技术网

Java 使用带Spring 4.x的JasperReportsViewResolver将pdf保存在磁盘上

Java 使用带Spring 4.x的JasperReportsViewResolver将pdf保存在磁盘上,java,spring,spring-mvc,jasper-reports,Java,Spring,Spring Mvc,Jasper Reports,我使用的是SpringBoot、SpringDataREST和JasperReport(6.x)。 我创建了一个REST控制器,它应该在磁盘上导出一个PDF报告,并向客户端返回一个“ok”字符串。因此,它与通常的用例有点不同,在这种用例中,用户可以将PDF发送回客户端 根据最佳实践,我使用本回复的解决方案4:对于PDF返回给客户端的“正常”用例: @RequestMapping(value = "/refunds/{id}/export", method = RequestMet

我使用的是SpringBoot、SpringDataREST和JasperReport(6.x)。 我创建了一个REST控制器,它应该在磁盘上导出一个PDF报告,并向客户端返回一个“ok”字符串。因此,它与通常的用例有点不同,在这种用例中,用户可以将PDF发送回客户端

根据最佳实践,我使用本回复的解决方案4:对于PDF返回给客户端的“正常”用例:

        @RequestMapping(value = "/refunds/{id}/export", method = RequestMethod.GET)
    public ModelAndView exportPdf(@PathVariable("id") Long id, HttpServletRequest request, Locale locale) throws Exception {
        Refund refund = refundRepository.findOne(id);
        if (refund != null) {
            ModelMap model = new ModelMap();
            model.addAttribute("datasource", new JREmptyDataSource(1));
            model.addAttribute("model", refund);        

            return new ModelAndView("RefundPdfView-IT", model);
        } else {
            throw new ResourceNotFoundException();
        }
    }
这种方法非常简洁,我在属性文件中创建了映射:

#REFUND
RefundPdfView-IT.(class)=org.springframework.web.servlet.view.jasperreports.JasperReportsPdfView
RefundPdfView-IT.url=classpath:/reports/accounting/refunds/Refund-IT.jrxml
我想知道是否可以重用这种方法将PDF保存在服务器的磁盘上,而不是将其发送回客户端。 我希望重用定义的映射,而不硬编码报告的位置和名称


请给我一些建议。

首先我想指出的是,您需要JasperExportManager。 exportReportToPdfFile(JasperPrint JasperPrint,java.lang.String文件名) 在服务器中本地保存文件

从您的用例来看,不清楚为什么要将文件保存在服务器中,我觉得与其保存文件,不如保存搜索参数。因此,当您单击参数时,您将再次获得/生成pdf文件

或者,您应该在服务器中使用curl,并使用参数调用所需的url