jeudi 18 août 2011

GWT : Erreur de compilation avec une Map



Problème :

Dans votre code, vous déclarez Map<Integer, Integer> map = new HashMap<Integer, Integer>
et lors de la compilation vous avez l'erreur suivante :

         [ERROR] Line 23: No source code is available for type com.google.gwt.dev.util.collect.HashMap<K,V>; did you forget to inherit a required module?


Solution :

Les collections du tpe Map fonctionne avec des Objects.Or la class Object n'est pas serializable.
Il faut donc créer une classe qui va contenir votre map en lui passant @gwt.typeArgs <java.lang.Integer,java.lang.Integer>
dans les commentaires pour définir ce que va contenir votre map :


public class ChartData implements IsSerializable {


 /**
  * This field is a Map that must always contain Strings as its keys and
  * values.
  * 
  * @gwt.typeArgs <java.lang.Integer,java.lang.Integer>
  */
 public Map data;
 
 public ChartData() {
 }
}


Ensuite vous pouvez utiliser votre map comme ceci :

CharData charData = new CharData();
charData.data.put(12,13);

Référence :
http://www.gwtapps.com/doc/html/com.google.gwt.doc.DeveloperGuide.RemoteProcedureCalls.SerializableTypes.html