Ultimamente venho trabalhando muito com relatórios feitos no Ireport (até mais do que eu gostaria) e como sei que é difícil conseguir boas dicas, resolvi fazer uma compilação de dicas aqui para quem passa por alguns “perrengues” com essa ferramenta.
Passar uma lista como datasource de um subrelatorio
Deve-se usar essa expressão no datasourceconection do subrelatorio new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{Lista})
O field Lista é a lista de objetos que deseja que seja passado para o relatório.
No subrelatorio se quizer pegar os atributos do objeto da lista é so declara-los como Field que o jasper vai fazer o papel de mapea-los para você.
Na imagem acima tenho o meu field $F{servicos} que é do tipo List
No subrelatorio se quizer pegar os atributos do objeto da lista é so declara-los como Field que o jasper vai fazer o papel de mapea-los para você.
Na imagem acima tenho o meu field $F{servicos} que é do tipo List
Não passar nenhum dado para o Subrelatorio e mesmo assim fazer com que ele abra
Basta usar a seguinte expressão new JREmptyDataSource(), com isso o relatório ira abrir sem precisar de valor algum.
Basta usar a seguinte expressão new JREmptyDataSource(), com isso o relatório ira abrir sem precisar de valor algum.
Criar uma expressão para se verdadeira imprimir o relatório ou campo do relatório
Se quiser que o relatório ou algum campo dele só imprima de acordo com alguma condição basta colocar um teste booleano na propriedade print when expression
Ex: new Boolean($V{campoDouble}.doubleValue()>0) Nesse exemplo só sera impresso se o campo for maior que zero. A imagem abaixo ilustra esse exemplo:
Passando um Mapa como parâmetro
Declara-se um Field do tipo Map
Ex: org.apache.commons.collections.map.HashedMap
Nesse exemplo usei HashedMap, mas poderia ter sido usado qualquer outro tipo de mapa,no relatório que ira receber o Mapa como parâmetro será preciso declarar uma variável, seta-se o variable class com o caminho da classe que está sendo salva no mapa
Ex: com.meuprojeto.to.MinhaClasseTO
No variable expression coloca-se a chave que irá pegar o valor do mapa.
Ex:$P{meuMap}.get($F{valorDaChaveMapa}), depois no Field do relatório é so pegar o valor assim: $V{minhaVariavel}.geMeuAtributo()
Passando uma lista de Strings para o subrelatorio
Se quiser passar uma lista de Strings para um subrelatorio e recuperar os valores deverá declarar o field com a expressão $F{_THIS}, com isso conseguira recuperar os valores da lista.
Se precisar inserir uma palavra em negrito no meio de um texto, como feito nessa frase, basta setar o Markup como styled e usar a tag <style isBold="true"> No texto Negrito </style> como na imagem abaixo: