Pessoal,
Estou há algum tempo tentando resolver o problema de usar scriptlets no Jasper Reports. Na verdade eu consegui fazer com que a classe fosse chamada, mas ao tentar imprimir o valor de uma variável atribuindo um valor a ela, simplesmente não funciona.
O scriptlet é muito simples, trata-se apenas de um teste e está no mesmo package do arquivo .jrxml para que funcione corretamente. Eu tenho uma variável (variable1) do tipo String que eu testei usar de duas formas diferentes: 1. Atribuindo o variable expression = $P{REPORT_SCRIPTLET}.getTeste() e 2. usando o método setVariable como pode-se observar no scriptlet abaixo.
Em ambos os casos a variável imprime um NULL no meu relatório.
package com.prosul.jasper.templates;
import net.sf.jasperreports.engine.JRDefaultScriptlet;
import net.sf.jasperreports.engine.JRScriptletException;
public class JRPerformanceProjetosScriptlet extends JRDefaultScriptlet{
private String teste = “”;
public String getTeste() throws JRScriptletException {
return teste;
}
@Override
public void afterGroupInit(String groupName) throws JRScriptletException {
super.afterGroupInit(groupName);
}
@Override
public void beforeGroupInit(String groupName) throws JRScriptletException {
teste += "bla";
this.setVariableValue("variable1", teste.toString());
super.beforeGroupInit(groupName);
}
@Override
public void beforeReportInit() throws JRScriptletException {
super.beforeReportInit();
}
}
Mais do que isso, eu venho fazendo testes com o iReports e o Jasper 3.6.1 e 3.6.0 há algum tempo. Tenho observado que:
- as funções de expressão que estão indicadas em ajudas no próprio fórum do Jasper não funcionam;
- os exemplos de expressões, scriptlets e outros dados coletados em materiais que eu consegui pegar na web não funcionam;
- por exemplo, embora voce sete uma variável como String, se você colocar um “” no Initial Value Expression, dá erro; existe um tópico no fórum do Jasper sobre isso, segui as instruções do cara, mas efetivamente isso não funciona (inclusive no fórum a pessoa que abriu o tópico ficou sem resposta porque também não conseguiu fazer funcionar).
Isso tem me desgastado bastante. Eu pretendia mudar todo um projeto que temos aqui em que os relatórios são gerados em html e jsf para utilizar um componente que fosse visualmente mais adequado e me permitisse ganhar em produtividade.
Tenho tido tantas dificuldades com o Jasper que estou quase abandonando-o. Ele parece muito bom pra geração de relatórios simples, contendo apenas seções de detalhe, mas se você necessita de resumos, crosstabs, manipulação dos dados já gerados no detalhe, gráficos, ele parece muito fraco!!!
Será que eu estou testando uma versão instável? Ou ele é assim mesmo?
Existe um Crystal Reports for Eclipse IDE, andei dando uma olhada nele, parece bem mais consistente (mesmo porque aqui usamos eclipse e o JasperAssistant é bem fraquinho), mesmo porque o Crystal está aí há muitos anos. Eu não queria usar uma tecnologia proprietária com um software desenvolvido todo em plataformas open source. Mas não estou vendo muitas alteranativas.
Será que vocês poderiam me ajudar com as suas impressões a respeito dos problemas que eu descrevi?
Grande abraço a todos…