PDF 플러그인을 사용하고 있지 않습니다. Jasper 용 Java API를 사용하고 있습니다. 모든 것이 잘 작동합니다. 별도의 창에서 PDF가 열립니다. 내가 겪고있는 문제는 데이터가 발견되지 않고 브라우저의 빈 탭으로 열리는 경우입니다. 나는 이것을 가로 채고 데이터가 없다는 메시지를 보여 주려고 노력하고 있지만, 나는 아무 것도 시도하지 않고있다. 여기 Grails 컨트롤러를 사용하여 PDF를 생성하기 전에 데이터가 존재하는지 확인하십시오.
컨트롤러에서 코드입니다 : 내가 Jquery.ajax을 시도하고 PDF 데이터 또는 성공 기능에 메시지를 잡기 위해 노력했습니다projAccomps = projAccomps.findAll { ProjectAccomplishment pa ->
pa.workDate >= startDate && pa.workDate <= endDate
}
// I'd like to be able to check right here for no data
// and send back a message instead
//
// if (projAccomps.size() < 1) ...
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(projAccomps)
String jasperFile =
grailsApplication.mainContext
.getResource('reports/accomplishment-listing.jasper')
.file
.getAbsoluteFile()
// Report parameter
Map<String, String> reportParam = new HashMap<String, String>()
String projectQuery = "All projects"
String dateRange = ""
Boolean allProjects = true
if (params.project) {
projectQuery = project.name
allProjects = false
}
if (params.startDate) {
dateRange = startDate.format('MM/dd/yyyy')
}
if (params.endDate) {
dateRange += " - " + endDate.format('MM/dd/yyyy')
}
String reportCriteria = "Work Order: ${wo.workOrderNumber}, Project(s): ${projectQuery}, Dates: ${dateRange}"
reportParam['report_criteria'] = reportCriteria
reportParam['all_projects'] = allProjects
JasperPrint print = JasperFillManager.fillReport(jasperFile, reportParam, ds);
byte[] bytes = JasperExportManager.exportReportToPdf(print)
render(file: bytes, contentType: 'application/pdf')
, 그러나 그것은 재앙이었다.
누구든지이 작업을 수행하는 방법에 대한 아이디어가 있습니까? 예를 들어, 응답을 생성하는 방법은 여러 가지, 리디렉션 또는 렌더링, 경우에 당신이
내가이
일을해야한다고 생각 리디렉션하고 수익을 사용하는 것이 합리적 노출이있는 컨트롤러 액션에서
위는 ajax를 통해 호출 되었습니까? –