Nei template di Jasper Reports è possibile definire dei parametri, ovvero dei valori da passare al momento dell’esecuzione del report in modo che ne modificano il funzionamento.
Alcuni esempi di utilizzo possono essere:
- Stringhe da inserire così come sono, ad esempio il titolo della pagina, un’annotazione, ecc;
- Valori da utilizzare nelle query SQL embedded nel report;
- Parametri di funzionamento: specifiche di formattazione, percorsi di file o immagini da includere, codici di vario genere;
- … e la lista potrebbe continuare per molto!
L’utilizzo dei parametri nei report, se usato bene, può davvero fare la differenza, accontentando tutti: gli utenti finali avranno a disposizione dei report incredibilmente flessibili, variegati e professionali, e gli sviluppatori potranno realizzare tutto ciò con (relativamente) poco sforzo.
Dichiarazione dei parametri
Riprendiamo in mano il report che abbiamo creato nella seconda lezione (“Formattazione di base”), e salviamolo con un nuovo nome (File -> Salva come…), in modo da poter esplorare le nuove funzionalità senza perdere il lavoro svolto.
- titolo del report, che chiameremo title;
- nome dell’operatore e un numero progressivo, che chiameremo operator e report_id. Non è difficile incontrare questi parametri nei report creati per grosse aziende, dove l’esecuzione degli stessi viene sottoposta a processi di audit per motivi vari: sicurezza, statistche, conformità a procedure ISO, ecc.
Per definire i parametri in iReport bisogna:
- dalla finestra Report inspector (se non la vedete attivatela da Finestra -> Report inspector) cliccare con il tasto destro alla voce Parametri e aggiungi parametro;
- nella finestra Proprietà impostiamo:
- nome: title
- come classe lasciamo java.lang.String
- lasciamo selezionato usa come prompt (vedremo poi a cosa serve);
- (opzionale) in valore espressione di default mettiamo “NO TITLE”
- procediamo similmente per i parametri operator e report_id.
Utilizzo dei parametri
Se proviamo ora a eseguire il report, si aprirà una finestra che ci chiede di inserire, uno alla volta, i parametri che abbiamo configurato. Ma non abbiamo ancora deciso come utilizzarli! Rimediamo subito.
Il parametro ovviamente andrà a sostituire l’etichetta di testo che attualmente è cablata nel report, per farlo bisogna trasformare l’etichetta (o label) in un campo di testo (o textfield). Per farlo bisogna:
- inserire questo valore al posto del titolo esistente: $P{title}. Il simbolo $P{…} infatti serve per referenziare il valore del parametro specificato nelle parentesi graffe;
- cliccare col tasto destro, selezionare transform to -> campo di testo (in effetti al momento iReport ha ancora qualche problema di traduzione…).
Per gli altri due parametri possiamo procedere similmente, creando due textfield tramite la palette (Finestre -> palette) e utilizzando queste espressioni come valori: ${operator} e ${report_id}.
Sviluppi
In realtà nel 99% dei casi i parametri vengono passati al report da procedure automatiche, senza che compaiano finestrelle sul monitor… specialmente se i report vengono eseguiti su un server! In effetti la proprietà usa come prompt è stata creata per l’utilizzo congiunto con uno strumento come iReport, per permettere ai designer di testare comodamente i report dentro iReport o prodotti simili.