Relatório Jasper no Seam

0 respostas
gustavodini

Bom dia a todos, estou com um problema na geração de meus relatorios no Seam.

Implementei a classe ReporterAction e fiz a Classe RelatorioRequerimentoLicenca mas quando clico no link para gerar o relatório ele reclama que não exite os atributos da entidade no relatório…

as duas classes implementadas

@Name("relatorioRequerimentoLicenca")
public class RelatorioRequerimentoLicenca extends ReporterAction{

	@In(create = true)
	RequerimentoList requerimentoList;
 
	@Override  
	protected String getReportPath() {  
		return "/WEB-INF/reports/RequerimentoLicenca.jasper";  
	}


    protected Collection getCollection() {  
	     return requerimentoList.getResultList();  
	}
	     
	@Override  
	protected Map<String, Object> getParams() {  
		Map<String, Object> params = new HashMap<String, Object>(); 
		params.put("",null);
		return params;  
	} 
	
	
}
public abstract class ReporterAction {  

	@In  
	FacesMessages facesMessages;  

	@In
	EntityManager entityManager;  

	@In(value = "org.jboss.seam.pdf.documentStore", create = true)  
	DocumentStore documentStore;  
	
	public static String formato;

	protected abstract String getReportPath();  
	protected abstract Map<String, Object> getParams();
	protected abstract Collection getCollection();  


    //Arquivos em PDF
	@SuppressWarnings("deprecation")  
	public String print() throws JRException {  

		String reportUrl = getReportPath();    

		try {  

			Map<String, Object> params = new HashMap<String, Object>();  
			// o entity manager deve ser informado para o Jasper  
			params.put(JRJpaQueryExecuterFactory.PARAMETER_JPA_ENTITY_MANAGER, entityManager);  
			// obter os parametros especificos do relatório  
			params.putAll(getParams());
			JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(getCollection());          
			// obter o caminho real (file system) para o relatario  
			FacesContext facesContext = FacesContext.getCurrentInstance();  
			HttpServletRequest request = (HttpServletRequest) facesContext.getExternalContext().getRequest();  
			String reportUrlReal = request.getRealPath(reportUrl);  
			// imprimir o relatorio para um stream em PDF
			JasperPrint impresao = JasperFillManager.fillReport(reportUrlReal,params,ds);  
			ByteArrayOutputStream output = new ByteArrayOutputStream();  
			JasperExportManager.exportReportToPdfStream(impresao, output);
			// armazenar o relatorio do DocumentStore do SEAM  
			String reportId = documentStore.newId();
			DocumentType pdf = new DocumentType("pdf", "application/pdf"); 
			DocumentData data = new DocumentData("Report #" + reportId , pdf, output.toByteArray());  
			documentStore.saveData(reportId, data);  
			// retornar para o caminho padrao do SEAM para exibicao de relatorios  
			return "/seam-doc?docId=" + reportId;  

		}catch (Exception e) {  
			facesMessages.addFromResourceBundle("Erro no relatorio PDF: " + e.getMessage());  
			return null;  
		}  
	} 
	
	
	
	

    //Arquivos HTML
	public String printHtml() throws JRException {  


		String reportUrl = getReportPath();    
		String reportId="";
		try {  


			Map<String, Object> params = new HashMap<String, Object>();  

			// o entity manager deve ser informado para o Jasper  
			params.put(JRJpaQueryExecuterFactory.PARAMETER_JPA_ENTITY_MANAGER, entityManager);  
			// obter os parâmetros específicos do relatório  
			params.putAll(getParams());

			JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(getCollection());          

			FacesContext facesContext = FacesContext.getCurrentInstance();  
			HttpServletRequest request = (HttpServletRequest) facesContext.getExternalContext().getRequest();  
			String reportUrlReal = request.getRealPath(reportUrl);  
			JasperPrint impresao = JasperFillManager.fillReport(reportUrlReal,params,ds);
			
			ByteArrayOutputStream output = new ByteArrayOutputStream(); 
			JRHtmlExporter exporter = new JRHtmlExporter();
			exporter.setParameter(JRHtmlExporterParameter.JASPER_PRINT,impresao);
			exporter.setParameter(JRHtmlExporterParameter.OUTPUT_STREAM,output);
			request.getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE,impresao);
			exporter.setParameter(JRHtmlExporterParameter.IMAGES_MAP, new HashMap<Object, Object>());
			 exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI,request.getContextPath() + "/image?image="); 
			exporter.exportReport();



			reportId = documentStore.newId();  
			DocumentData data = new DocumentData("Report #" + reportId , new DocumentType("html","document/html"), output.toByteArray());  
			documentStore.saveData(reportId, data); 


			return "/seam-doc?docId=" + reportId;   

		}catch (Exception e) {  
			facesMessages.addFromResourceBundle("ERRO_RELATORIO:"+ e.getMessage(),   
					new Object[] {reportUrl, e.getMessage()});  

			return null;  
		}	
	}
	
	
	
	
	
	
	//Arquivos RTF
	
	public String printRtf() throws JRException {  


		String reportUrl = getReportPath();    
		String reportId="";
		try {  


			Map<String, Object> params = new HashMap<String, Object>();  

			// o entity manager deve ser informado para o Jasper  
			params.put(JRJpaQueryExecuterFactory.PARAMETER_JPA_ENTITY_MANAGER, entityManager);  
			// obter os parâmetros específicos do relatório  
			params.putAll(getParams());

			JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(getCollection());          

			FacesContext facesContext = FacesContext.getCurrentInstance();  
			HttpServletRequest request = (HttpServletRequest) facesContext.getExternalContext().getRequest();  
			String reportUrlReal = request.getRealPath(reportUrl);  

			JasperPrint impresao = JasperFillManager.fillReport(reportUrlReal,params,ds);  
			ByteArrayOutputStream output = new ByteArrayOutputStream(); 
			JRRtfExporter exporter = new JRRtfExporter();
		    exporter.setParameter(JRExporterParameter.JASPER_PRINT,impresao);
			exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,output);
			exporter.exportReport();
             			


		    reportId = documentStore.newId();  
			DocumentData data = new DocumentData("Report #" + reportId , new DocumentType("rtf","application/rtf"), output.toByteArray());  
			documentStore.saveData(reportId, data);  



			return "/seam-doc?docId=" + reportId; 

			}catch (Exception e) {  
				facesMessages.addFromResourceBundle("ERRO_RELATORIO:"+ e.getMessage(),   
						new Object[] {reportUrl, e.getMessage()});  

				return null;  
			}	
		}



	
	
	
	
	

   //Arquivos em XLS
	public String printXls() throws JRException {  


		String reportUrl = getReportPath();    
		String reportId="";
		try {  


			Map<String, Object> params = new HashMap<String, Object>();  

			// o entity manager deve ser informado para o Jasper  
			params.put(JRJpaQueryExecuterFactory.PARAMETER_JPA_ENTITY_MANAGER, entityManager);  
			// obter os parâmetros específicos do relatório  
			params.putAll(getParams());

			JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(getCollection());          

			FacesContext facesContext = FacesContext.getCurrentInstance();  
			HttpServletRequest request = (HttpServletRequest) facesContext.getExternalContext().getRequest();  
			String reportUrlReal = request.getRealPath(reportUrl);  

			JasperPrint impresao = JasperFillManager.fillReport(reportUrlReal,params,ds);  
			ByteArrayOutputStream output = new ByteArrayOutputStream(); 
			JRXlsExporter exporter = new JRXlsExporter();
			exporter.setParameter(JRXlsExporterParameter.JASPER_PRINT,impresao);
			exporter.setParameter(JRXlsExporterParameter.OUTPUT_STREAM,output);
			exporter.exportReport();
            
			
			


			reportId = documentStore.newId();  
			DocumentData data = new DocumentData("Report #" + reportId , new DocumentType("xls","application/xls"), output.toByteArray());  
			documentStore.saveData(reportId, data); 
			return "/seam-doc?docId=" + reportId; 
              
               
			}catch (Exception e) {  
				facesMessages.addFromResourceBundle("ERRO_RELATORIO:"+ e.getStackTrace(),   
						new Object[] {reportUrl, e.getMessage()});  

				return null;  
			}	
		}



	}

o erro no servidor

09:07:18,150 INFO  [lifecycle] WARNING: FacesMessage(s) have been enqueued, but may not have been displayed. sourceId=null[severity=(INFO 0), summary=(Erro no relatorio PDF: Error retrieving field value from bean : NUMERO_PROTOCOLO), detail=(Erro no relatorio PDF: Error retrieving field value from bean : NUMERO_PROTOCOLO)]

se alguem puder me ajudar ficarei grato!

Criado 11 de julho de 2008
Respostas 0
Participantes 1