Relatório perdendo os parâmetros do HashMap

5 respostas
Diego_Adriano

Bem galera, estou chamando um relatório em JSF e quando passo os parâmetros para o Jasper esse parâmetro é perdido:

System.out.println("ANTES PARAMETRO");
System.out.println("Incio: "+inicio);
System.out.println("Fim: "+fim);
System.out.println("Id: "+idTurma);
	
Map parametro = new HashMap();
	
parametro.put("idTurma", idTurma);
parametro.put("inicio", inicio);
parametro.put("fim", fim);
parametro.put("usuario", sessao.getNome().toUpperCase());
		
System.out.println("DEPOIS PARAMETRO");
System.out.println("Incio: "+parametro.get(inicio));
System.out.println("Fim: "+parametro.get(fim));
System.out.println("Id: "+parametro.get(idTurma));

No Console fica assim:

ANTES PARAMETRO
Incio: Fri Mar 01 00:00:00 BRT 2013
Fim: Tue May 28 00:00:00 BRT 2013
Id: 3
DEPOIS PARAMETRO
Incio: null
Fim: null
Id: null

5 Respostas

Rodrigo_Sasaki

Talvez você devesse tentar:System.out.println("DEPOIS PARAMETRO"); System.out.println("Incio: "+parametro.get("inicio")); System.out.println("Fim: "+parametro.get("fim")); System.out.println("Id: "+parametro.get("idTurma"));

Diego_Adriano

Então, ai que esta a dúvida, pois depois de "inserir" os parâmetros no MAP eu chamo o relatório passando o MAP, e o relatório vem em branco com os parâmetro Null

try {
		
	ServletOutputStream servletOutputStream = response.getOutputStream();
	JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
			
	JasperRunManager.runReportToPdfStream(reportStream,servletOutputStream,parametro,jrRS);
					
	servletOutputStream.flush();
	servletOutputStream.close();
			
	}

Fiz um System.out só pra ver se estava carregado ...

Rodrigo_Sasaki

Você tentou do jeito que eu disse? Se os valores forem impressos o problema não é o seu Map

Diego_Adriano

Então, fiz como sugeriu … e realmente imprimi corretamente !!
Alguma idéia do que pode ser agora ?

Diego_Adriano

Então, ainda não consegui resolver, será que alguém ai tem alguma ideia a sugerir ?
Vou postar o código todo ...

@SuppressWarnings({ "static-access", "unchecked", "rawtypes" })
	public void geraImpressao(Long idTurma, Date inicio, Date fim) throws ClassNotFoundException, SQLException{
		
		Conexao conex = new Conexao();
		Connection conn = conex.getConnection();
		Statement stm = conn.createStatement();
		String SQL = " SELECT "+
					    " turma.`id` AS turma_id, "+
					    " turma.`nome` AS turma_nome, "+
					    " funcionario.`id` AS funcionario_id, "+
					    " funcionario.`nome` AS funcionario_nome, "+
					    " funcionario.`sobrenome` AS funcionario_sobrenome, "+
					    " cliente.`id` AS cliente_id, "+
					    " cliente.`nome` AS cliente_nome, "+
					    " cliente.`sobrenome` AS cliente_sobrenome, "+
					    " modalidades.`id` AS modalidades_id, "+
					    " modalidades.`nome` AS modalidades_nome, "+
					    " aula.`id` AS aula_id, "+
					    " aula.`dataAula` AS aula_dataAula, "+
					    " aula.`turma` AS aula_turma, "+
					    " presenca.`aluno` AS presenca_aluno, "+
					    " presenca.`aula` AS presenca_aula, "+
					    " presenca.`compareceu` AS presenca_compareceu "+
					" FROM "+
					    " `funcionario` funcionario INNER JOIN `turma` turma ON funcionario.`id` = turma.`professor` "+
					    " INNER JOIN `modalidades` modalidades ON turma.`modalidade` = modalidades.`id` "+
					    " INNER JOIN `aula` aula ON turma.`id` = aula.`turma` "+
					    " INNER JOIN `presenca` presenca ON aula.`id` = presenca.`aula` "+
					    " INNER JOIN `cliente` cliente ON presenca.`aluno` = cliente.`id` "+
					" WHERE "+
					    " aula.`dataAula` BETWEEN '"+ inicio +"' AND '"+ fim +"' "+
					  " AND "+
					    " turma.`id` = '"+ idTurma +"' ";
		
		ResultSet rs = stm.executeQuery(SQL);
		
		FacesContext context = FacesContext.getCurrentInstance();
		HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
		
		InputStream reportStream = context.getExternalContext().
				getResourceAsStream("/Relatorios_Jasper/PresencasOriginalCopia.jasper");
		
		Usuario sessao = new Usuario();
		HttpSession sessioon = (HttpSession) FacesContext.getCurrentInstance()
				.getExternalContext().getSession(false);
		
		sessao = (Usuario) sessioon.getAttribute("usuario");
		
		System.out.println("ANTES PARAMETRO");
		System.out.println("Incio: "+inicio);
		System.out.println("Fim: "+fim);
		System.out.println("Id: "+idTurma);
		
		Map parametro = new HashMap();
		
		parametro.put("idTurma", idTurma);
		parametro.put("inicio", inicio);
		parametro.put("fim", fim);
		parametro.put("usuario", sessao.getNome().toUpperCase());
		
		System.out.println("DEPOIS PARAMETRO");
		System.out.println("Incio: "+parametro.get("inicio"));
		System.out.println("Fim: "+parametro.get("fim"));
		System.out.println("Id: "+parametro.get("idTurma"));	
		
		
		try {
		
				ServletOutputStream servletOutputStream = response.getOutputStream();
				JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
				
				JasperRunManager.runReportToPdfStream(reportStream,servletOutputStream,parametro,jrRS);
					
				servletOutputStream.flush();
				servletOutputStream.close();
			
			} catch (JRException e) {
				e.printStackTrace();
			
			}catch (IOException e) {
				e.printStackTrace();
			
			}finally{
				context.responseComplete();
			}
				
	}
Criado 28 de maio de 2013
Ultima resposta 29 de mai. de 2013
Respostas 5
Participantes 2