Olá pessoal, estou com dificuldades para gerar relatório, consigo gerar o relatório com uma lista tudo certinho, porém quero clicar na linha da tabela de alunos e gerar o relatório do aluno selecionado, como faço isso ? (Teria que usar o método GET para selecionar o aluno, porém par gerar o relatório usa o POST, então como que faria ?)
Aqui a tabela
<div class="card">
<table class="table table-responsive">
<thead>
<tr>
<th class="text-dark font-weight-bold">#</th>
<th class="text-dark font-weight-bold">Nome</th>
<th class="text-dark font-weight-bold">Apelido</th>
<th class="text-dark font-weight-bold">Nome Responsavel</th>
<th class="text-dark font-weight-bold">Usuario</th>
</tr>
</thead>
<tbody>
<tr th:each="a : ${alunosInscricao}">
<td th:text="${a.id}">1</td>
<td th:text="${a.nome}"></td>
<td th:text="${a.apelido}"></td>
<td th:text="${a.nome_responsavel}"></td>
<td th:text="${a.user}"></td>
<td class="left"><a class="btn btn-success btn-sm"
th:href="@{/alunosInscricao/report/{codigo}(codigo=${aluno.id})}">Imprimir
</a> <a class="btn btn-link btn-warning btn-sm"
th:href="@{/alunosInscricao/{codigo}(codigo=${aluno.id})}">Editar
</a></td>
</tr>
<tr>
<td colspan="36" th:if="${#lists.isEmpty(alunosInscricao)}">Nenhum
aluno foi encontrado</td>
</tr>
</tbody>
</table>
</div>
Aqui o método que uso para gerar a lista de alunos.
@PostMapping(value = "gerarRelatorio")
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();
}
}