我尝试创建一个基于servlet的报表服务。
当应用程序运行时,我仍然使用.jrxml文件恢复我的应用程序 给我报告没有改变设计,所以我认为jasper缓存它在某处。
如何将其关闭或强制清除此缓存?
File compiledTemplate=new File(JASPER_COMPILED_TEMPLATES_PATH+ File.separator+templateName+".jasper");
File template=new File(JASPER_TEMPLATES_PATH+File.separator+templateName+".jrxml");
JasperReport jasperReport=null;
if(compiledTemplate.exists()){
compiledTemplate.delete();
}
JasperCompileManager.compileReportToFile(template.getAbsolutePath(),compiledTemplate.getAbsolutePath());
jasperReport=(JasperReport) JRLoader.loadObjectFromFile(compiledTemplate.getAbsolutePath());
return jasperReport;
答案 0 :(得分:0)
将compiledTemplate用作文件的原因是什么?试试这样:
File template=new File(JASPER_TEMPLATES_PATH+File.separator+templateName+".jrxml");
JasperReport jasperReport= JasperCompileManager.compileReport(template);
return jasperReport;
答案 1 :(得分:0)
如果您使用的是Grails环境,请删除web-app / reports /中的所有.jasper文件,以便在进行更改后刷新报告。
然后,您可以将.jrxml重新编译为新的.jasper文件。