我了解到JasperViewer(JasperReports的默认预览组件)是一个Swing组件,那么有什么方法可以将其转换或嵌入到Web应用程序中?有人说我应该使用Java Web Start,但是从this link JWS中学到的知识,JWS对于在客户端计算机上下载和安装应用程序很有用,但这不是我们的情况。其他可能可行的工作(也许只是在理论上)是将jFrame转换为jApplet,如in this link所述

  • 您是否尝试过这些解决方案中的任何一种,它们是否有效?
  • 您知道该问题的其他解决方案吗?
  • 最佳答案

    如果您知道如何生成报告,则可以轻松地在servlet内完成报告,并将生成的文件发送到客户端。使用JWS应用程序或Applet很有可能意味着该报告是在客户端生成的,并且原始数据以及所有依赖项也可供客户端使用。

    以下代码假设您正在生成PDF文件

    public class ReportServlet extends HttpServlet {
    
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        try {
            // initialize your report objects here
            JasperReport jasperReport =
            JasperPrint print =
    
            JRPdfExporter exporter = new JRPdfExporter();
    
            exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
            exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, resp.getOutputStream());
    
            resp.setContentType("application/pdf");
            exporter.exportReport();
        } catch (Exception e) {
            resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Error generating report : " + e.getClass() + " " + e.getMessage());
        }
    }
    

    您可以通过设置正确的内容类型并使用匹配的JRXYZExporter(JRHtmlExporter,JExcelApiExporter等)来扩展上面的示例以支持多种导出格式。

    如果您需要更多可定制的内容,则可能还需要研究Jasper Server

    07-24 18:52
    查看更多