2011-05-04 3 views
0

안녕하세요, 컨트롤러와 컨트롤러에 양식 값을 보내고 있습니다. rptdesign 파일로 임시 값 폴더에 보고서를 생성하고 있지만 내 요구 사항은 대화 상자를 저장하거나 열어야한다는 것입니다.Birt 리포트가 PDF로 열리지 않습니다.

@RequestMapping("/leave/generateEmpLeaveReport.json") 
public void generateEmployeeLeaveReport(HttpServletRequest request, 
     HttpServletResponse response) throws Exception { 
    String reportName = "D:/git-repositories/cougar_leave/src/java/com//report/myLeaveSummary.rptdesign"; 
    File designTemplateFile = new File(reportName); 
    if (!designTemplateFile.exists()) { 
     throw new FileNotFoundException(reportName); 
    } 

    Map<String, Object> parameters = new HashMap<String, Object>(); 
    parameters.put("empId", NumberUtils.toInt(request.getParameter("id"))); 
    parameters.put("reportTitle", "EMPLOYEE LEAVE"); 
    parameters.put("fromDate", request.getParameter("fromDate")); 
    parameters.put("toDate", request.getParameter("toDate")); 
    parameters.put("leaveType", 
      NumberUtils.toInt(request.getParameter("leaveType"))); 
    parameters.put("transactionType", 
      NumberUtils.toInt(request.getParameter("transactionType"))); 
    reportManager.addSystemParams(parameters, null, 
      RequestUtils.getUser(request)); 
    File file = null; 
    try { 
     ReportType reportType = ReportType.PDF; 
     OfflineReportContext reportContext = new OfflineReportContext(
       reportName, reportType, parameters, null, 
       "EMPLOYEE LEAVE SUMMARY"); 

     StringBuffer buffer = new StringBuffer(); 
     file = offlineReportGenerator.generateReportFile(reportContext, 
       buffer); 
     ControllerUtils 
       .openFile(file.getParent(), response, file.getName()); 
    } catch (Exception e) { 
     log.error(e, e); 
    } finally { 
     if (file != null && file.exists()) { 
      file.canExecute(); 
     } 
    } 

} 

내 아약스 요청은 아래 그래서 사용자는 PLZ 내 컨트롤러가

응답 내가 아약스 요청이 어떤 하나가 더 나은 솔루션을 알고, 그래서 만약 어떤 파일을 다운로드하는 것을 허용하지 것이라고 생각 보고서 또는 오픈 을 절약 할 수 있습니다 이하

generateReport : function() { 
     if (this.form.valid()) { 
      fromDate = new Date($("input[name='fromDate']").val()) 
      toDate = new Date($("input[name='toDate']").val()) 
      if (fromDate > toDate) { 
       GtsJQuery 
         .showError("To date should be greater or equals than From date !") 
      } else { 

       var request = GtsJQuery.ajax3(GtsJQuery.getContextPath() 
           + '/leave/generateEmpLeaveReport.json', { 
          data : { 
           id : $("input[name='employeeId']").val(), 
           fromDate : $("input[name='fromDate']") 
             .val(), 
           toDate : $("input[name='toDate']").val(), 
           leaveType : $("select[name='leaveType']") 
             .val(), 
           transactionType : $("select[name='transactionType']") 
             .val(), 
           orderBy : $("select[name='orderBy']").val() 
          } 
         }); 
       request.success(this.callback("onSubscribeSuccess")) 
      } 
     } 
    }, 

답변

0

컨트롤러 응답은 임시 파일이어야하며 내용 유형을 조정하면됩니다.

관련 문제