VRaptor com Ireport (response committed)

5 respostas
J

Caros,

Estou usando Vraptor e Ireport. Criei um Logic que gera um relatório apenas se este relatório retorna registros. É mais ou menos assim:

 Se numero de registros > 0 {
   geraRelatorio
    return "OK"
 }
 Senão
   return "invalid" //direciona para minha página de erro

O problema é que quando o relatório é gerado, o response sofre o comit pelo jasper e depois o Vraptor tenta fazer mais um commit, gerando  uma java.lang.IllegalStateException. Teria como eu evitar este commit no response feito pelo Vraptor ? Segue abaixo meu código:

public String gerarRelatorio(Long idContratante, String carteiras, String filiais, Date periodoData1, Date periodoData2, Long idAssessoria) {

Connection con = null;				
try {			
	String nomeDataSource = PropertiesUtil.obterPropriedadeConfig(servletContext, "relatorio_ds");
	con = DSLocator.lookup(nomeDataSource).getConnection();															
					
	if (getRowCount2(con, periodoData1, periodoData2) > 0){				
		exportarXLSRelacaoRecibo(periodoData1, periodoData2);				
		return "ok";					
	}								
	} catch (Exception e) {
		log.error("Erro gerando relatório.", e);
	} finally {
		try {				
			con.close();
		} catch (Exception e) {
			log.error("Erro fechando conexão do relatório de recibos.", e);
		}
	}				
	return "invalid";
}

Alguém tem alguma idéia ?

5 Respostas

Lucas_Cavalcanti

tenta anotar a sua logica com @Viewless

assim o vraptor não tenta fazer nada com a view, sua própria lógica será responsável por jogar coisas no response…

[]'s

J

Obrigado pela dica Lucas.
Eu coloquei o @ViewLess e a exception realmente sumiu, mas o problema agora é que quando a query do relatório não retorna registros, daí eu tenho que direcionar para outra página, o que não está acontecendo agora devido ao @ViewLess, ou seja, o meu método tem que dar o comit por si só se o relatório tiver registros ou terá que deixar por conta do vRaptor caso o relatório não tenha registros. Se souber de alguma pista…
Muito Obrigado.

Lucas_Cavalcanti

cria um método validateMinhaLogica, e dá um erro de validação quando não houver registros…

ou vc pode atualizar pro VRaptor3, que tem um jeito muito mais fácil, e tem um modo de compatibilidade
com o VRaptor2, daí da pra você fazer isso aos poucos :wink:

J

Vleu Lucas, funcionou!
Mesmo com o método @ViewLess o validate consegue fazer o redirecionamento de volta.
[]s José Roberto.

R

lucascs:
cria um método validateMinhaLogica, e dá um erro de validação quando não houver registros…

ou vc pode atualizar pro VRaptor3, que tem um jeito muito mais fácil, e tem um modo de compatibilidade
com o VRaptor2, daí da pra você fazer isso aos poucos ;)

Lucascs bom dia. Existe alguma documentação para integração de um relatório criado no ireport e vraptor?
Criei o relatório, mas gostaria de saber se é preciso criar .Logic para chamar o relatório e onde deve ficar o
relatório que foi gerado no iReport.
Muito obrigado :stuck_out_tongue:

Criado 16 de setembro de 2009
Ultima resposta 13 de out. de 2009
Respostas 5
Participantes 3