2010-08-10 16 views
8

Utilizzo IReport 3.5.0 e l'applicazione GWT java utilizza il file .jasper compilato per creare un report. Sto creando l'origine dati nell'applicazione java e utilizzo il metodo fillReport() per compilare il rapporto. Funziona bene, riempie i campi che ho definito sia in .jrxml che in Java.Errore argomento 'chiave' Null

Tuttavia, voglio utilizzare questi campi per creare un grafico a torta e non funziona. Fornisco i miei campi di lavoro come espressioni chiave e valore per il grafico, ma quando eseguo l'applicazione, restituisce l'errore java.lang.IllegalArgumentException: Null 'key' argument. Non riesco a risolverlo, anche quando fornisco l'espressione chiave $V{PAGE_COUNT}, esso restituisce sempre la stessa 'chiave nulla' 'errore. Sono bloccato. Grazie per qualsiasi aiuto.

+0

In quale parte del rapporto è presente il grafico? I campi potrebbero essere fuori portata. – Gordon

+0

l'ho messo nel sommario, ma ha dato lo stesso errore quando l'ho provato nei dettagli. – Halo

+0

È possibile stampare i campi nella banda di dettagli? – Gordon

risposta

6

Ho avuto lo stesso tipo di problema. Fondamentalmente il grafico a torta in JasperReport odia l'oggetto nullo. Il messaggio di errore non aiuta molto ...

Dato che hai già controllato l'espressione chiave, controlla ogni altro elemento. Il mio errore era nell'espressione di un'etichetta!

Se è possibile eseguire l'applicazione in un IDE, inserire un punto di interruzione su "IllegalArgumentException". Ti aiuterà a trovare la causa principale. Assicurati inoltre che il rapporto ricompili il jrxml ogni volta che apporti una modifica.

Un altro approccio potrebbe essere quello di iniziare con un esempio e modificarlo in base alle esigenze a poco a poco. Troverà il colpevole abbastanza presto!

A proposito, questo non ha nulla a che fare con GWT poiché tutto questo viene eseguito sul server.

3

ho avuto lo stesso tipo di problema con iReport 3.0 ho usato condizionali per lavorare con valori nulli sul tasto di espressione e il valore di espressione:

($F{FIELDEXPRESSION}!=null?$F{FIELDEXPRESSION}:"") 

($F{FIELDVALUE}!=null?(new BigDecimal($F{FIELDVALUE})):(new BigDecimal("0"))) 
0

Ho avuto lo stesso problema. Quindi ho usato un ciclo if per controllare se c'è un valore nullo nella colonna che sto attraversando.

if(result.get()==null) // result is where is stored my resultset output 
{ 
    dataset.setValue(count.get(j),"N/A","No Data Available");} // count refers to the number of null entries 
     else dataset.setValue(count.get(j),results.get(j),results.get(j)); 
    } 
0

Poiché non riesco a commentare, questa potrebbe non essere una risoluzione completa. Ho risolto il problema controllando i tipi di dati dei campi.

Dove ho già avuto:

<field name="date" class="java.sql.Date"/> 

ho cambiato:

<field name="date" class="java.lang.String"/> 

perché il mio campo mi darà es: "15 luglio" (FYI che ho fatto nella mia query) formato digitare la data che non può essere il tipo java.sql.Date.

Problemi correlati