VRaptor 3 - JasperMaker (para JasperReporter)

Oi,

Eu estou usando esse código para gerar relatórios e enviar para o browser para o utilizador fazer o download mas não estou conseguindo. Ele passa no código sem problemas mas depois não envia nada para o browser. :cry:
O que pode ser?

[code] @Path({"","/"})
 public Download getConsentimentoReport(int id_episodio) {
       Collection<Consentimento> consentimento = consentimentoDAO.getListaConsentimento(id_episodio);
       return jasperMaker.makePdf(
           "report1.jasper",
           consentimento, 
           "teste.pdf", 
           true);
 }[/code]

o relatório está escrevendo alguma coisa?

a tela fica em branco?

tem certeza que vc quer colocar isso no path / ? (ou o controller tá anotado com @Path tb?)

ele não está fazendo nada, não escreve, não dá erro, nem lança o download. Se eu for direto pelo link do controller ele faz o download do relatorio. Já tentei usar um servlet em vez do Vraptor mas o resultado é o mesmo. Ah, eu estou a usar o Extjs4 para fazer a chamada ao controller e ao servlet. Provavelmente deve ser no tratamento da resposta que eu não estou a conseguir gerar o download do pdf. :frowning:

isso não vai funcionar do jeito que vc quer…

vc tem que colocar o link direto pro controller. Tente mudar aquele true pra false, daí o browser pode escolher mostrar o pdf direto nele.

Oi, obrigado pela ajuda. Mas não resultou ainda :expressionless: O meu controller está assim agora:

[code]@Resource
@Path("/Report")
public class ReportController{
private final JasperMaker jasperMaker;
private ConsentimentoDAO consentimentoDAO;
private Result result;
private Session session;
private ServletContext context;

 //Injeta no construtor o jasperMaker
 public ReportController(Result result, JasperMaker jasperMaker, ConsentimentoDAO consentimentoDAO, Session session, HttpServletResponse response, ServletContext context) {
      this.result = result;
      this.jasperMaker = jasperMaker;
      this.consentimentoDAO = consentimentoDAO;
      this.session = session;
      this.context = context;
 }
 @Get
 @Path({"/GetConsentimentoReport"})
 public Download getConsentimentoReport(int id_episodio) {
       Collection<Consentimento> consentimento = consentimentoDAO.getListaConsentimento(id_episodio);
       return jasperMaker.makePdf(
           "report1.jasper",
           consentimento, 
           "teste.pdf", 
           false);
       
 }[/code]

Ele corre no Extjs4 sem qualquer erro mais não mostra nada, nem pede para fazer download. Mas se eu abrir o browser e colocar o endereço minhaApp/Report/GetConsentimentoReport?id_episodio=12345 ele mostra o report preenchido com os dados correctos! :roll: Será que não há forma de processar isto no Extjs4?

EDIT: Já consegui resolver! Usei um iframe e já dá para visualizar. O único problema é no scroll ele começa a ficar todo partido mas depois volta ao normal. De qualquer forma muito obrigado pela ajuda :smiley:

Fica aqui o que usei:

[code]var relatorioWindow = new Ext.Window({
title : “Relatório de Consentimento”,
width : 400,
height: 400,
layout : ‘fit’,
items : [
new Ext.Panel({
autoWidth: true,
autoHeigth: true,
html:""
})

                    ]        
                }).show();[/code]

Olá pessoal,

Esse post me ajudou muito!
Entretanto no meu caso estou tendo alguns problemas.

Consegui enviar uma outra lista por parâmetro para utilizar no subreport. Aparece os itens certinho.

Mas no meu caso eu preciso utilizar o caro “Print When Expression”, e PRECISO acessar um valor da minha lista (no relatório principal).

Então o que eu tenho (no relatório principal):

parametro -> itensNegociacao (Collection)
Field -> itemDescricao (String)

O que eu preciso fazer:
A verficação da descrição no campo “Print When Expression” pois só quero que apareça os itens referentes aquela descrição.
new Boolean( $F{itemDescricao}.equals( $P{itensNegociacao} ) (AQUI ESTÁ O PROBLEMA) - eu precisaria fazer $P{itensNegociacao}.getDescricao() ou algo assim, mas não dá certo!

Já tentei de tudo: $P{itensNegociacao.descricao}, $P{itensNegociacao}.getDescricao(), e algumas outras formas esquisitas.

Não sei mais o que fazer! Alguém tem alguma solução? Sabe como posso resolver isso?
Agradeço desde já por toda ajuda!!!

Pessoal,

Estou com um não estou conseguindo utilizar a classe.

Tenho uma aplicação para geração de contracheques, cada contracheque tem um colaborador, e uma lista de eventosSalariais.

Problema:

Unknown property ‘CONTRACHEQUES_ID’ on class ‘class model.Contracheque’

Como faço para ter acesso as informações da lista de eventos salariais e do colaborador, lá no Jasper?