Bom dia galera, estou com dúvidas quanto a geração de relatórios em novas guias via JSF.
É o seguinte, tenho um método no meu ManageBean que recebe uma lista da DAO com dados referentes a uma entidade referenciada por um id. (Um form onde é inserido o id e então gera-se um relatório, em nova guia, com os dados da entidade que possui o id inserido). Acontece que se o usuário digitar um id que não possui nenhum dado associado a aplicação continua abrindo uma nova guia e exibindo um relatório em branco.
Gostaria que, caso a lista viesse para o bean nula, não fosse aberta a nova guia, mas sim uma mensagem de “vazio” ao usuário. Tem com fazer isso ? Segue as classes relacionadas abaixo:
Método bean:
public void relatorioTalhaoByProp() {
Relatorio r = new Relatorio();
Map<String, Object> parametros = new HashMap<>();
parametros.put("propriedade", this.param_id);
JRDataSource jrds = new JRBeanCollectionDataSource(talhaoDao.readTalhaoByProp(param_id));/*na minha visão o if viria aqui.*/
String jrxmlFile = FacesContext.getCurrentInstance()
.getExternalContext().getRealPath("/reports/talhaoReport.jrxml");
r.toPDF(jrxmlFile, parametros, jrds);
}
o metodo toPDF é o padrão para se gerar PDF no jasperReport
Segue a página xhtml:
<h:form id="relatTalhao">
<p:focus />
<p:messages id="messages" />
<p:panelGrid columns="2" >
<p:outputLabel value="Propriedade: " for="propId"/>
<p:inputText id="propId" value="#{talhaoController.param_id}"
required="#{param['relatTalhao:btnConfirm']==false}"/>
</p:panelGrid>
<div style="margin: 0 auto; width: fit-content;">
<p:commandButton id="btnConfirm" class="btn btn-success btn-md"
value="Gerar PDF" icon="fa fa-file-pdf-o"
action="#{talhaoController.relatorioTalhaoByProp()}"
onclick="this.form.target = '_blank'" ajax="false" />
</div>
</h:form>
Valeu!!!