0
首先,對我的英語不好,感到抱歉。而我的問題: 我嘗試在html頁面上顯示報告預覽。爲此,設置參數:Jasper報告不顯示圖像
request.getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, outFilePath);
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRHtmlExporterParameter.IS_OUTPUT_IMAGES_TO_DIR, Boolean.TRUE);
exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "/preview/image?image=");
exporter.exportReport();
可以看出,我們將報告導出到指定目錄下的html文件中。在網上,我增加了以下內容:
<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>/preview/image</url-pattern>
</servlet-mapping>
對於顯示HTML,我們有FTL控制器:
@RequestMapping(value = "/events/preview", method = RequestMethod.POST)
public void reportPreviewEvents(String requestInJson,
@RequestParam("pageSize") Integer pageSize,
@RequestParam("pageNo") Integer pageNo,
HttpServletResponse response,
HttpServletRequest request,
Model model) {
try {
Map<String, Object> toModel = auditHandler.handleExportEvents(requestInJson, JasperExporter.Type.HTML, pageSize, pageNo, request);
model.addAllAttributes(toModel);
String filePath = (String) toModel.get("filePath");
reportContent = org.apache.commons.io.IOUtils.toString(new FileInputStream(filePath), Charset.forName("UTF-8"));
response.setCharacterEncoding("UTF-8");
response.getWriter().write(reportContent);
但是當我打開它(IP:端口/上下文/報告/事件/預覽/) ,我無法在html中看到圖像。 在此先感謝!
此外:我發現http://community.jaspersoft.com/questions/531045/image-not-displayed-html-view。最後的評論。我用5.0.4版本 – MacTire
發現錯誤。它需要上下文的圖像uri,如:exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI,ContextLoader.getCurrentWebApplicationContext()。getServletContext()。getContextPath()+「/ preview/image?image =」); – MacTire
只需從request.getSession()。getServletContext()。getRealPath(「/」)獲取相關路徑 – Harsha