關於怎麼整合網上到處都是例子、apache也有比較詳細的例子說明,我是參考這篇文章的http://www.blogjava.net/sterning/archive/2008/01/02/172317.html我使用他的源碼HTML預覽時還是不能正常顯示,images/px(網上的一種解決方案)都有還是不能正常顯示,無奈之下只有查看源代碼了。
Struts2對通過JasperReportsResult.java類的doExecute方法對JasperReport進行了簡單的整合,這個方法對JasperReport的API簡單的包裝(車輪理論^_^)
jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, stackDataSource);
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: [email protected] @ 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這個插件的源碼最終解決圖片顯示問題
exporter.setParameter(JRHtmlExporterParameter.IMAGES_MAP, imagesMap);
exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, request.getContextPath() + imageServletUrl);
對於HTML預覽時右擊查看源代碼出現的是相對路徑,但是大多數情況下根據生成的路徑不能指定到px圖片,不知道是不是這個插件包本身的問題還是其它的原因,總之先做出效果來、修改上句換成絕對路徑吧!
好久都沒寫文章了,感覺思路混亂不知道寫了些什麼,大家要是有不明白的可直接提出來。