Struts2整合JasperReport预览HTML格式不显示图片有关问题解决方案(转)
关于怎么整合网上到处都是例子、apache也有比较详细的例子说明,我是参考这篇文章的http://www.blogjava.net/sterning/archive/2008/01/02/172317.html我使用他的源码HTML预览时还是不能正常显示,images/px(网上的一种解决方案)都有还是不能正常显示,无奈之下只有查看源代码了。
Struts2对通过JasperReportsResult.java类的doExecute方法对JasperReport进行了简单的整合,这个方法对JasperReport的API简单的包装(车轮理论^_^)JasperReport jasperReport = (JasperReport) JRLoader.loadObject(systemId);
jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, stackDataSource);
String systemId = servletContext.getRealPath(finalLocation);
<param name="location">/jasper/notification.jasper</param>
package org.bulktree.jasper;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JasperCompileManager;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
/**
*
* @author bulktree Email: laoshulin@gmail.com @ Nov 26, 2008
*/
public class JasperAction extends ActionSupport {
private JRDataSource reportDataSource;
@Override
public String execute() throws Exception {
//定义一个自定义的数据源
reportDataSource = new JREmptyDataSource();
/*编译很耗时,Ireport可以编译jrxml文件可以减少程序运行的压力
* 下面一段代码可以不写直接使用Ireport编译好的jasper文件
*
*/
/* ServletActionContext.getRequest().setAttribute("name", "LAOSHULIN");
String path = ServletActionContext.getServletContext().getRealPath("/jasper");
System.out.println(path);
String sourceFileName = path + "\\" + "CarInstance.jrxml";
String destFileName = path + "\\" + "CarInstance.jasper";
JasperCompileManager.compileReportToFile(sourceFileName, destFileName);*/
return SUCCESS;
}
public JRDataSource getReportDataSource() {
return reportDataSource;
}
}
继续吧!采用HTML格式预览时,莫名的出现一些图片的xx,但是我们并没有使用图片啊,关于这个为什么网上的资料很详细本人只是解读一下Struts2这个插件的源码最终解决图片显示问题
protected String imageServletUrl = "\images\";
exporter.setParameter(JRHtmlExporterParameter.IMAGES_MAP, imagesMap);
exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, request.getContextPath() + imageServletUrl);
对于HTML预览时右击查看源代码出现的是相对路径,但是大多数情况下根据生成的路径不能指定到px图片,不知道是不是这个插件包本身的问题还是其它的原因,总之先做出效果来、修改上句换成绝对路径吧!
exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, servletContext.getRealPath(File.separator) + imageServletUrl);