我想从我的项目中的视图中显示PDF报告,但是当我按下调用该方法的按钮时,它不起作用。
这是我的.js
function mostrarPDF() {
var fechaInicio = $("#fechaInicio").val();
var fechaFinal = $("#fechaFinal").val();
var info = {fechaInicio:fechaInicio, fechaFin:fechaFinal};
var jsonData = JSON.stringify(info);
$.ajax({
type:"POST",
contentType:"application/json; charset=utf-8",
data:jsonData,
dataType:'json',
url:"ReporteIncidencia",
success:function (data) {
alert("pass!");
}
});
}
这是接收数据的控制器
@RequestMapping(value = "/Reporte/ReporteIncidencia", method = RequestMethod.POST)
public @ResponseBody void ReporteIncidenciasPDF(@RequestBody Simul s, HttpServletResponse response) throws JRException, IOException {
Date fechaInicio = s.getFechaInicio();
Date fechaFin = s.getFechaFin();
String reporte = context.getRealPath("/reportes/Reporte1.jasper");
Map parameters = new HashMap();
parameters.put("fechaFinal", fechaFin);
parameters.put("fechaInicio", fechaInicio);
String lineaConexion;
ServletOutputStream servletOutputStream = null;
JRPdfExporter exporter = new JRPdfExporter();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection(lineaConexion); //it works
JasperPrint jPrint = JasperFillManager.fillReport(reporte, parameters, conn);
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, baos);
exporter.exportReport();
response.setHeader("Content-Disposition", "inline; filename=report.pdf");
response.setContentType("application/pdf");
response.setContentLength(baos.size());
servletOutputStream = response.getOutputStream();
baos.writeTo(servletOutputStream);
servletOutputStream.flush();
} catch (Exception ex) {
System.out.println("Error: " + ex);
}
}
服务器不生成PDF文件,也不显示任何错误。有什么想法吗?