Olá, quero gerar o relatório de alunos (uso BD mysql) JasperReports ao clicar em um botão, porem estou encontrando dificuldades pois é a primeira vez que faço.
Peguei um tutorial na internet e não obtive sucesso.
Clico no botão e não acontece nada.
> Segue Controller
@Autowired
public Alunos alunos;
@GetMapping("/alunosCadastrados")
public ModelAndView relatorioAlunosCadastrados() {
ModelAndView mv = new ModelAndView("relatorio/alunosCadastrados");
mv.addObject(new RelatorioAlunosResumidoDTO());
return mv;
}
@RequestMapping(value = "gerarRelatorio", method= RequestMethod.GET)
public void gerarRelatorio(HttpServletResponse response) throws Exception {
response.setContentType("text/html");
List<Aluno> alunosList = alunos.findAll();
JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(alunosList);
InputStream jrxmlInput = this.getClass().getResourceAsStream("/relatorios/alunosCadastradosResumido.jrxml");
JasperDesign design = JRXmlLoader.load(jrxmlInput);
JasperReport jasperReport = JasperCompileManager.compileReport(design);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,null, dataSource);
JRPdfExporter pdfExporter = new JRPdfExporter();
pdfExporter.setExporterInput(new SimpleExporterInput(jasperPrint));
ByteArrayOutputStream pdfReportStream = new ByteArrayOutputStream();
pdfExporter.setExporterOutput(new SimpleOutputStreamExporterOutput(pdfReportStream));
pdfExporter.exportReport();
// Configura a respota para o tipo PDF
response.setContentType("application/pdf");
// Define que o arquivo pode ser visualizado no navegador e também nome final do arquivo
// para fazer download do relatório troque 'inline' por 'attachment'
response.setHeader("Content-Disposition", "inline; filename=relatorioalunoscadastrados.pdf");
// Faz a exportação do relatório para o HttpServletResponse
OutputStream responseOutStream = response.getOutputStream();
responseOutStream.write(pdfReportStream.toByteArray());
responseOutStream.close();
pdfReportStream.close();
}
VIEW
<div class="page-header" style="margin-top: -30px;">
<h3 class="page-title"> Relatório de Alunos Cadastrados </h3>
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="/alunos/new">Cadastrar Aluno</a></li>
<li class="breadcrumb-item active" aria-current="page">Listar</li>
</ol>
</nav>
</div>
<div class="card">
<div class="card-body">
<button type="submit" class="btn btn-success mb-2" th:href="@{${page.Context.request.contextPath}/gerarRelatorio}" name="action">
<i class="mdi mdi-send icon-md"></i> Emitir
</button>
<br/>
</div>
</div>
</section>