Uma solução para transformar o resultado do jasperReporter em um download no browser… escolhendo nome, e podendo ou não forçar download.
além de oder enviar parametros, e enviar uma Coleção como DataSource
coloca esse componente no seu projeto
e dentro da sua lógica faz assim
[code]
@Resrouce
public class MeuController{
private final JasperMaker jasperMaker;
//Injeta no construtor o jasperMaker
public MeuController(JasperMaker jasperMaker) {
this.jasperMaker = jasperMaker
}
public Download minhasLogica() {
//aqui vc monta a coleção para ser usada como DataSource no jasper
//e coloca seus parametros (se quiser) em um mapa de parametros...
return jasperMaker.makePdf(
"seuArquivoJasper.jasper",
suaColecaoComOsBeansParaDataSource,
"nomeDoArquivoQueSeraExibidoParaUsuario.pdf",
desejaForcarODownload,
opicionalmenteObjetosParametrosPodemSerEnviadosOuNao);
}
} [/code]
Pronto… é isso
por padrão, o jasperMaker usa a pasta “WEB-INF/jasper/” para procurar seus arquivos *.jasper
caso queria trocar esse lugar padrão, é só trocar o lugar no web.xml colocando o seguinte
<context-param>
<param-name>vraptor.jasperMaker</param-name>
<param-value>WEB-INF/jasper/</param-value>
</context-param>
caminho que inicia com “/” é conciderado caminho absoluto da maquina
caminho que inicia sem a barra, que é o caso do exemplo que passei, usa como base o caminho do contexto, ou seja, o caminho do seu WebContent
dentro do jasper, vc vai ter dois parametros pra usar se quiser… o 1° é o “jasperPath” que contémo caminho para a pasta dos arquivos .jasper, que é útil para sub-relatorios, e o 2° é o “contextPath” que é o caminho do WebContent, e é útil pra encontrar qualquer arquivo dentro do container web.
é isso
boa sorte pra quem for usar
Agradecimentos ao Lucas, que ajudou a colocar o resultado do jasper dentro do objeto Download do vraptor.
Libs necessários para usar jasper, com essa solução (pelomenos as que eu precisei)
- commons-digester-1.7.jar
- commons-beanutils-1.7.0.jar
- groovy-all-1.5.5.jar
- iText-2.1.0.jar
- jasperreports-3.7.0.jar



