Olhei em vários lugares, mas a maioria não mostra como proceder quando não exitem registros.
Quando o relatório é gerado é aberto em uma nova aba do navegador graças a essa instrução que coloquei no botão esse comando onclick=“this.form.target=’_blank’”, mas quando não ha dados o sistema abre mesmo assim uma nova aba igual a tela anterior e desfaz o thema da tela aumentando a fonte.
Será que alguém pode me dar uma ajuda.
Obs.: Eu verifico se existe registro olhando o .size() do arrayList<> usando um if. Mas mesmo assim a nova tela abre novamente.
Acredito que o problema aconteça pois o js que abre uma nova guia está no onclick, dessa forma, independente da sua validação, ele vai executar esse js.
O que você pode fazer é remover o onclick e no bean, no método referenciado pelo actionListener, incluir o seguinte código depois da sua validação (na condição de querer abrir essa nova aba):
Acho que assim deva funcionar hehe.
Se não for isso, é algo próximo.
(Desculpem se o código ficar sem formatação… estou no celular… é ruim demais por aqui )
M
marcdas1 like
Cara obrigado pela sua atenção, mas não funcionou não o execute não existe no ‘getCurrentInstance’ não, pelo menos não apareceu pra mim rs.
Segue o código que estou usando no BEAN:
publicclassGeraRelatorio{Utilidadeutilidade=newUtilidade();privateHttpServletResponseresponse;privatestaticStringstrCaminhoPadrao="/resources/reports/";publicStringimprimeInconsistencia(FacesContextcontext,IntegerintIdConfig){StringstrRet="";Filejasper=newFile(FacesContext.getCurrentInstance().getExternalContext().getRealPath(strCaminhoPadrao+"Inconsistencia_lancamento.jasper"));InconsistenciaDLOinconsistenciaDLO=newInconsistenciaDLO();ArrayList<Inconsistencia>lista=inconsistenciaDLO.retInconsistencia(intIdConfig);if(lista.size()>0){byte[]bytes;try{bytes=JasperRunManager.runReportToPdf(jasper.getPath(),null,newJRBeanCollectionDataSource(lista));response=(HttpServletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse();this.response.setContentType("application/pdf");this.response.setHeader("Content-disposition","inline; filename=InconsistenciaReport.pdf");this.response.setContentLength(bytes.length);ServletOutputStreamoutStream=response.getOutputStream();outStream.write(bytes,0,bytes.length);outStream.flush();outStream.close();FacesContext.getCurrentInstance().responseComplete();strRet="PASSOU";}catch(JRException|IOExceptione){// TODO Auto-generated catch blocke.printStackTrace();strRet="FALHOU";}}else{utilidade.retMensagem("AVISO","Aviso","Sem das para exibir!!");strRet="PASSOU";}returnstrRet;}}
I
igorventurelli
Que loucura.
Olha só a documentação.
Lá tem o método getCurrentInstance().
M
marcdas1 like
Desculpa escrevi errado.
No getCurrentInstance não achei o ‘execute()’;
I
igorventurelli
Opa
Eu tb escrevi errado (2x) hahah
Não é FacesContext, mas sim RequestContext.