Bom galera estou tentando gerar um relatorio pdf utilizando jasperreports porem está dando o seguinte erro:
[quote][color=red]… 65 more
25/03/2013 17:09:46 com.sun.faces.renderkit.html_basic.HtmlBasicRenderer getForComponent
AVISO: Não foi possível encontrar o componente com a ID guia na exibição.[/color][/quote]
meu codigo é o seguinte:
[code] public void toxicologicoPDF(){
RelatorioUtil relatorioUtil = new RelatorioUtil();
try {
byte[] bytes = relatorioUtil.geraToxicologico(new HashMap<String, Object>(), “”, “”, laudoSelecionado.getIdLaudo());
FacesContext fc = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) fc.getExternalContext().getResponse();
response.setHeader( “Content-disposition”, “attachment;filename=“toxicologico_” + laudoSelecionado.getIdLaudo() + “.pdf”” );
response.setContentType( "application/pdf" );
response.setContentLength( bytes.length );
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write( bytes, 0, bytes.length );
ouputStream.flush();
ouputStream.close();
fc.renderResponse();
fc.responseComplete();
} catch (UtilException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}[/code]
[code] public byte[] geraToxicologico(HashMap<String, Object> parametrosRelatorio, String nomeRelatorioJasper, String nomeRelatorioSaida, int idLaudo) throws UtilException {
//StreamedContent arquivoRetorno = null;
byte[] bytes;
parametrosRelatorio = new HashMap<String, Object>();
parametrosRelatorio.put(“idLaudo”, idLaudo);
nomeRelatorioJasper = nomeRelatorioSaida = “toxicologico”;
try {
FacesContext context = FacesContext.getCurrentInstance();
String caminhoRelatorio = context.getExternalContext().getRealPath("relatorio");
String caminhoArquivoJasper = caminhoRelatorio + File.separator + nomeRelatorioJasper + ".jasper";
JasperReport relatorio = (JasperReport) JRLoader.loadObject(caminhoArquivoJasper);
bytes = JasperRunManager.runReportToPdf(relatorio, parametrosRelatorio, HibernateUtil.getSessionFactory().getCurrentSession().connection());
} catch (JRException e) {
throw new UtilException("Nao foi possivel gerar o relatorio.", e);
}
return bytes;
}
[/code]
poste sua pagina xhtml, acho que é que esta o erro pelo pedaço do log que postou deve ser na view…
[code]<?xml version="1.0" encoding="UTF-8"?>
<h:outputLabel value="Guia Pericial: " for="guia"/>
<p:selectOneMenu id="guiaPericial" value="#{toxicologicoPreliminarBean.toxicologicoPreliminar.guiaPericial}" required="true"
requiredMessage="Campo Guia é obrigatorio." converter="guiaConverter"
style="width:250px">
<p:ajax />
<f:selectItem itemLabel="Selecione..." itemValue="" />
<f:selectItems value="#{guiaPericialBean.ativa}" var="guiaPericial"
itemLabel="#{guiaPericial.numeroGuia} - #{guiaPericial.tipoExame.descricaoExame}" itemValue="#{guiaPericial}"/>
</p:selectOneMenu>
<h:outputLabel value="Data da Ocorrência: " for="dataOcorrencia"/>
<p:calendar value="#{toxicologicoPreliminarBean.toxicologicoPreliminar.dataOcorrencia}" id="dataOcorrencia" required="true" requiredMessage="Campo Data da Ocorrência em branco!">
</p:calendar>
<h:outputLabel value="Referência: " for="referencia"/>
<p:inputText id="referencia" label="Referência" value="#{toxicologicoPreliminarBean.toxicologicoPreliminar.referencia}" size="50" maxlength="150"
required="false" requiredMessage="Campo Referência inválido!">
</p:inputText>
<h:outputLabel value="Local do Exame: " />
<p:inputText id="localExame" label="Local do Exame" value="#{toxicologicoPreliminarBean.toxicologicoPreliminar.localExame}" size="50" maxlength="150"
required="false" requiredMessage="Campo Local do Exame inválido!">
</p:inputText>
<h:outputLabel value="Substancia: " for="substancia"/>
<p:selectOneMenu id="substancia" value="#{toxicologicoPreliminarBean.toxicologicoPreliminar.involucro.substancia}" required="true"
requiredMessage="Campo Substancia é obrigatorio." converter="substanciaConverter"
style="width:160px">
<f:selectItem itemLabel="Selecione..." itemValue="" />
<f:selectItems value="#{substanciaBean.lista}" var="substancia"
itemLabel="#{substancia.tipoSubstancia}" itemValue="#{substancia}"/>
</p:selectOneMenu>
<h:outputLabel value="Quantidade: " for="quantidade" />
<p:inputText id="quantidade" label="Quantidade"
value="#{toxicologicoPreliminarBean.toxicologicoPreliminar.involucro.quantidade}"
size="20" required="true">
<f:convertNumber minFractionDigits="1"/>
</p:inputText>
<h:outputLabel value="Peso (gramas): " for="peso" />
<p:inputText id="peso" label="Peso"
value="#{toxicologicoPreliminarBean.toxicologicoPreliminar.involucro.peso}"
size="20" required="true">
<f:convertNumber pattern="#0.000"/>
</p:inputText>
<h:outputLabel value="Tipo do Involucro: " for="tipoInvolucro" />
<p:selectOneMenu id="tipoInvolucro"
value="#{toxicologicoPreliminarBean.toxicologicoPreliminar.involucro.tipoInvolucro}"
required="true"
requiredMessage="Campo Tipo de Involucro é obrigatorio."
converter="tipoInvolucroConverter" style="width:160px">
<f:selectItem itemLabel="Selecione..." itemValue="" />
<f:selectItems value="#{tipoInvolucroBean.lista}"
var="tipoInvolucro" itemLabel="#{tipoInvolucro.descricao}"
itemValue="#{tipoInvolucro}" />
</p:selectOneMenu>
<h:outputLabel value="Cor: " for="cor" />
<p:selectOneMenu id="cor"
value="#{toxicologicoPreliminarBean.toxicologicoPreliminar.involucro.cor}"
required="true"
requiredMessage="Campo Cor é obrigatorio."
converter="corConverter" style="width:160px">
<f:selectItem itemLabel="Selecione..." itemValue="" />
<f:selectItems value="#{corBean.lista}"
var="cor" itemLabel="#{cor.descricao}"
itemValue="#{cor}" />
</p:selectOneMenu>
<h:outputLabel value="Observação: " for="observacao"/>
<p:inputTextarea id="observacao" rows="5" cols="52" maxlength="255" autoResize="false" value="#{toxicologicoPreliminarBean.toxicologicoPreliminar.observacao}"/>
<h:inputHidden/>
<p:commandButton value="Salvar" actionListener="#{toxicologicoPreliminarBean.salvar()}" update=":edicao :listagem" icon="ui-icon-disk" />
</h:panelGrid>
</h:form>
</p:panel>
<br/>
<p:panel id="panelListagemToxicologicoPreliminar" header="Lista de Toxicologico Preliminar" toggleable="true">
<h:form id="listagem">
<p:dataTable value="#{toxicologicoPreliminarBean.lista}" var="toxicologicoPreliminar" rendered="#{!empty toxicologicoPreliminarBean.lista}" paginator="true" rows="10"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="5,10,15">
<p:column>
<f:facet name="header">Laudo Número</f:facet>
#{toxicologicoPreliminar.idLaudo} - #{toxicologicoPreliminar.guiaPericial.numeroGuia}
</p:column>
<p:column>
<f:facet name="header">Procêdencia</f:facet>
#{toxicologicoPreliminar.guiaPericial.procedencia.descricao}
</p:column>
<p:column>
<f:facet name="header">Autoridade Requisitante</f:facet>
#{toxicologicoPreliminar.guiaPericial.autoridade.nome}
</p:column>
<p:column>
<f:facet name="header">Destino do Laudo</f:facet>
#{toxicologicoPreliminar.guiaPericial.destino.nomeDestino}
</p:column>
<p:column>
<f:facet name="header">Data da Ocorrência</f:facet>
<h:outputText value="#{toxicologicoPreliminar.dataOcorrencia}" >
<f:convertDateTime type="date" dateStyle="short" pattern="dd/MM/yyyy"/>
</h:outputText>
</p:column>
<p:column>
<f:facet name="header">Referência</f:facet>
#{toxicologicoPreliminar.referencia}
</p:column>
<p:column>
<f:facet name="header">Indiciado</f:facet>
#{toxicologicoPreliminar.guiaPericial.envolvido}
</p:column>
<p:column>
<f:facet name="header">Substância / Descrição</f:facet>
#{toxicologicoPreliminar.involucro.substancia.tipoSubstancia} - #{toxicologicoPreliminar.involucro.substancia.descricao}
</p:column>
<p:column>
<f:facet name="header">Quantidade Invólucro</f:facet>
<h:outputText value="#{toxicologicoPreliminar.involucro.quantidade}" >
<f:convertNumber minFractionDigits="1"/>
</h:outputText>
</p:column>
<p:column>
<f:facet name="header">Peso Invólucro</f:facet>
<h:outputText value="#{toxicologicoPreliminar.involucro.peso}" >
<f:convertNumber minFractionDigits="3"/>
</h:outputText>
</p:column>
<p:column>
<f:facet name="header">Usuario</f:facet>
#{toxicologicoPreliminar.usuario.nome}
</p:column>
<p:column headerText="Editar" style="text-align: center">
<p:commandLink update=":edicao">
<h:graphicImage library="images" name="editar.png"/>
<f:setPropertyActionListener target="#{toxicologicoPreliminarBean.toxicologicoPreliminar}" value="#{toxicologicoPreliminar}"/>
</p:commandLink>
</p:column>
<p:column headerText="Excluir" style="text-align: center">
<h:commandLink action="#{toxicologicoPreliminarBean.excluir}"
onclick="if (!confirm('Confirma a exclusão do Toxicologico Preliminar de número: #{toxicologicoPreliminar.idLaudo}?')) return false;">
<f:ajax execute="@this" render=":listagem"/>
<h:graphicImage library="images" name="excluir.png" style="border:0" />
<f:setPropertyActionListener target="#{toxicologicoPreliminarBean.toxicologicoPreliminar}" value="#{toxicologicoPreliminar}" />
</h:commandLink>
</p:column>
<p:column headerText="PDF" style="text-align: center" >
<h:commandLink action="#{toxicologicoPreliminarBean.toxicologicoPDF()}">
<f:setPropertyActionListener target="#{toxicologicoPreliminarBean.laudoSelecionado}" value="#{toxicologicoPreliminar}" />
<h:graphicImage library="images" name="pdf.png" title="Imprimir PDF" />
</h:commandLink>
</p:column>
</p:dataTable>
</h:form>
</p:panel>
</p:layoutUnit>
</ui:define>
</ui:composition>
[/code]
amigo resolveu, o problema estava no .jasper que estava procurando as imagens em outro workspace