Estou com um relatório de venda gerando pelo código da venda, até aqui tudo bem eu abro a pagina digito o código e o relatório gera normalmente. só que eu queria era colocar um link igual aos de edição e exclusão em uma lista de pesquisa na view que ao clicar nele o relatório seja gerado direto sem eu ter que digitar. como faço para chamar essa função deireto no link.
estou usando: Spring MVC,jasperreports e Thymeleaf para as views. agradeço desde já!
Segue trecho dos fontes.
View
<tbody>
<tr th:each="venda : ${pagina.conteudo}">
<td th:text="${venda.codigo}"></td>
<td th:text="${venda.cliente.nome}"></td>
<td th:text="${{venda.dataCriacao}}"></td>
<td th:text="|R$ ${{venda.valorTotal}}|"></td>
<td th:text="${venda.usuario.nome}"></td>
<td th:text="${venda.status.descricao}"></td>
<td class="text-center">
<a class="btn btn-link btn-xs js-tooltip" title="Editar"
th:href="@{/vendas/{codigo}(codigo=${venda.codigo})}">
<i class="glyphicon glyphicon-pencil"></i>
</a>
<a class="btn btn-link btn-xs js-tooltip " title="Imprimir"
<!-- gostaria de chama-lo aqui--> th:href="@{/relatorios/controleEntregas{codigo}(codigo=${venda.codigo})}"
>
<i class="fa fa-fw fa-file-pdf-o"></i>
</a>
</td>
controller
@GetMapping("/controleEntregas")
public ModelAndView relatorioControleEntrega() {
ModelAndView mv = new ModelAndView("relatorio/RelatorioControleEntrega");
mv.addObject(new ControleEntregaCodigo());
return mv;
}
@PostMapping(value ="/controleEntregas", params = "emitir")
public ResponseEntity<byte[]> gerarControleEntrega(ControleEntregaCodigo controleEntregaCodigo) throws Exception {
byte[] relatorio = relatorioService.gerarControleEntrega(controleEntregaCodigo);
return ResponseEntity.ok().header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_PDF_VALUE)
.body(relatorio);
}
service
public byte[] gerarControleEntrega(ControleEntregaCodigo controleEntregaCodigo) throws Exception {
Map<String, Object> parametros = new HashMap<>();
parametros.put("format", "pdf");
parametros.put("codigo", controleEntregaCodigo.getCodigo());
InputStream inputStream = this.getClass().getResourceAsStream("/relatorios/relatorio_controle_entrega.jasper");
Connection con = this.dataSource.getConnection();
try {
JasperPrint jasperPrint = JasperFillManager.fillReport(inputStream, parametros, con);
return JasperExportManager.exportReportToPdf(jasperPrint);
} finally {
con.close();
}
}
Se alguém puder ajudar agradeço!