1

我使用 Liferay CE 6.1 创建了一个 portlet,它查询 Oracle 数据库并显示来自 Jasper 4.5 的 HTML、PDF 和 Excel 报告。我正在尝试让 HTML 报告显示图像。我的 PDF 和 Excel 报告中有图像。我可以相信,从这里正确调用了报告,因为信息显示在那里,动态查询正常工作。我相信我的设置正确,但我无法显示图像。我是 Java 新手,所以我试图确定调试它的最佳方法。我的代码在这里:

报告生成代码:

Connection conn = myconnection.getconnection;
JasperPrint print = null;
String reportPath = "/html/reports/MyReport.jasper";

PortletContext context = getPortletContext();
InputStream reportStream = context.getResourceAsStream(reportPath);
Map<String, Object> map = new HashMap<String, Object>();
print = JasperFillManager.fillReport(reportStream, map, conn);

HTML 导出器类:

JRHtmlExporter exporter = new JRHtmlExporter();
request.getPortletSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE,printObject);
exporter.setParameter(JRExporterParameter.JASPER_PRINT, printObject);
exporter.setParameter(JRExporterParameter.OUTPUT_STRING_BUFFER, outputBuffer);
exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "../servlets/image?image=");
exporter.setParameter(JRHtmlExporterParameter.IS_WHITE_PAGE_BACKGROUND,java.lang.Boolean.FALSE);
exporter.setParameter(JRHtmlExporterParameter.IGNORE_PAGE_MARGINS, java.lang.Boolean.TRUE);
exporter.exportReport();

我的 web.xml 中有这段代码

<servlet>
    <servlet-name>ImageServlet</servlet-name>
    <servlet-class>net.sf.jasperreports.j2ee.servlets.ImageServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>ImageServlet</servlet-name>
    <url-pattern>/servlets/image</url-pattern>
</servlet-mapping>

我所读到的每一个地方都让我相信我有这个权利,但我在 HTML 版本中一无所获。报告的 PDF 和 XLS 版本均显示图形和图表。关于如何调试或排除故障并追踪它的任何线索?

谢谢,乔治

4

0 回答 0