Como selecionar item da tabela e gerar relatório JasperReport +SpringBoot

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();
    
}

}

Pode usar o get para selecionar o aluno, com o mesmo retorno do post.

1 curtida