2015-07-20 1 views
1

Ok, donc après avoir essayé très fort pendant quelques jours je ne suis toujours pas capable de faire ce travail.TypeMismatchException lors de la création d'une visualisation google datatable avec la colonne Type de type

C'est le problème: j'ai un JSP qui héberge un graphique Google qui va être construit à partir de données qui vont être envoyées via une servlet. J'utilise les bibliothèques Java Google Visualization pour implémenter cette servlet. Puis j'ai cette fonction d'aide qui, en prenant quelques données stockées dans une liste d'objets, construit une datatable. Voici la classe qui implémente ladite fonction:

public class DataTableGenerator { 

    public static DataTable generateDatatable(List<AccesoUrl> accesos) { 

     DataTable data = new DataTable(); 

     ArrayList<ColumnDescription> cd = new ArrayList<>(); 
     cd.add(new ColumnDescription("fecha", ValueType.DATE, "Fecha")); 
     cd.add(new ColumnDescription("navegador", ValueType.TEXT, "Navegador")); 
     cd.add(new ColumnDescription("ip", ValueType.TEXT, "IP")); 
     cd.add(new ColumnDescription("os", ValueType.TEXT, "Sistema Operativo")); 

     data.addColumns(cd); 


     try { 

      for(AccesoUrl acceso : accesos) { 
       GregorianCalendar calendario = new GregorianCalendar(); 
       calendario.setTimeZone(TimeZone.getTimeZone("GMT"));     

       data.addRowFromValues(calendario, acceso.getNavegador(), acceso.getIp(), acceso.getSistemaoperativo()); 

      } 

     } catch (TypeMismatchException e) { 
      System.out.println(e); 
     } 

     return data; 
    } 
} 

Maintenant, ce morceau de code devrait fonctionner, mais je reçois cette exception sur mon serveur web:

com.google.visualization.datasource.base .TypeMismatchException: incompatibilité de type de valeur. à com.google.visualization.datasource.datatable.value.ValueType.createValue (Source inconnue) à com.google.visualization.datasource.datatable.DataTable.addRowFromValues ​​(Source inconnue)

Je suis à la fin de l'esprit à présent. J'ai essayé toutes les variantes que je pouvais trouver sur Google afin que mon JSP affiche ces données sur un tableau de type Google Table. J'ai essayé d'envoyer une date sous forme de chaîne, une date sous la forme d'une chaîne formatée en tant que date javascript (c'est-à-dire "date (2015,4,4)" ou "nouvelle date (2015,4,4)"). J'ai essayé d'utiliser l'objet DateValue fourni avec la bibliothèque de visualisation java pour construire la date également (par exemple, DateValue (2015,4,4)). J'ai aussi essayé de passer une date Java. Rien ne fonctionne, tout lève une exception TypeMismatchException.

Je suis sûr que c'est la date qui me pose problème parce que dès que je supprime la colonne date de la datable tout fonctionne bien sans exception et je peux obtenir mes données affichées sur la table des cartes Google.

Donc, quelqu'un peut-il me dire exactement ce que je dois faire exactement dans mon code Java pour pouvoir construire un datatable avec une cellule de date?

+0

Avez-vous essayé la combinaison "objet java.util.Date + ValueType.DATETIME"? Au lieu de ValueType.DATE je veux dire. –

+0

@GergelyBacso oui, j'ai oublié de le mentionner mais ValueType.DATETIME me donne aussi des ennuis. J'ai déjà essayé ce que tu as suggéré – Greg

Répondre

1

Même j'ai fait face au même problème. Mais il semble que addRowFromValues ​​() ne supporte pas DateValue(). J'ai siwtched à addRow (TableRow). Je n'ai pas vu d'erreur. Vous pouvez utiliser quelque chose comme ci-dessous, Exemple de code:

DataTable data = new DataTable(); 
ArrayList<ColumnDescription> cd = new ArrayList<ColumnDescription>(); 
cd.add(new ColumnDescription("date", ValueType.DATE, "Executed Date")); 
cd.add(new ColumnDescription("value", ValueType.NUMBER, "Duration ")); 
data.addColumns(cd); 
TableRow tr = new TableRow(); 
tr.addCell(new DateValue(2015,7,7)); 
data.addRow(tr);