0
我不明白爲什麼我的代碼不是一直在運行。 我打開了一個jasper報告,但是對於前4個打開時間,報告被緩存或者代碼沒有執行(新的StreamResource中的代碼沒有執行第4次)。新的StreamResource.StreamSource()僅在5次運行原因?前4次我得到舊的,緩存的,臨時或我的事件不知道什麼是與舊參數的PDF文件。StreamResource,ByteArray問題
也許有人知道這個問題?
public static void open(final String fileName, final HashMap<String, Object> data) {
mylog.pl("@@@ Param's print @ open Report: Filename:" + fileName);
try {
Iterator<?> i = data.keySet().iterator();
while (i.hasNext()) {
String id = i.next().toString();
String value = (data.get(id) != null) ? data.get(id).toString() : "null";
mylog.pl(" id: " + id + " value: " + value);
}
} catch (Exception e) {
e.printStackTrace();
mylog.pl(e.getMessage());
}
StreamResource.StreamSource source = null;
source = new StreamResource.StreamSource() {
public InputStream getStream() {
byte[] b = null;
InputStream reportStream = null;
try {
reportStream = new BufferedInputStream(new FileInputStream(PATH + fileName + JASPER));
b = JasperRunManager.runReportToPdf(reportStream, data, new JREmptyDataSource());
} catch (JRException ex) {
ex.printStackTrace();
mylog.pl("Err @ JR" + ex.getMessage());
} catch (FileNotFoundException e) {
e.printStackTrace();
Utils.showMessage(SU.NOTFOUND);
return null;
}
return new ByteArrayInputStream(b);
}
};
StreamResource resource = null;
resource = new StreamResource(source, fileName + PDF);
resource.setMIMEType("application/pdf");
Page p = Page.getCurrent();
p.open(resource, "Report", false);
}