Retour : Page Principale > sommaire applications >  applications GWT

Pièges et conseils de développement pour une application GWT


OBSOLETE (2017) - ces informations sont considérées comme n'ayant plus cours en 2017


Ici sont répertoriés les problèmes liés à GWT et la solution trouvée pour les résoudre si elle existe :
Piège n°1 : "On croit que ça marche, mais en fait ça marche pas !" (voix de Rainer Z)

Créer un module pour GWT

Dans eclipse - clic droit sur le projet -> exporter -> java -> JAR
- cocher "exporter les fichiers sources et les ressources Java"
- cocher "ajouter des entrées de répertoire"

Ne sélectionner que le contenu du module src (pas le dossier war, etc...)
Pour ajouter le module ainsi créer au projet.

Clic droit sur le projet -> propriétés -> chemin de compilation -> bibliothèques
- Cliquer sur ajouter jar externe
- Ajout le chemin vers la ligne "<inherits name='org.tela_botanica. MonProjet'/>" (ou name est le chemin vers le fichier xml du module)
dans le fichier monprojet.gwt.xml de votre projet GWT

L'OOPHM ne fonctionne pas dans firefox et demande l'installation du developper plugin alors que celui est installé

Ceci est du à une incompatibilité de Firefox 3.6 avec ce plugin.
Pour résoudre ceci, rendez vous sur cette page
Ou bien téléchargez ce magnifique plugin compilé par mes soins gwt-dev-plugin.xpi

Connecter le débugger eclipse à l'application GWT
  • modifier le shell pour ajouter les arguments (pour java 5 ou sup):
  • configurer eclipse pour se connecter en Remote sur localhost/port 3408 et en ajoutant vos sources
  • lancer le shell, l'application attends une connection avant de se lancer :
  • > lancer le debug eclipse



Différence de rendu entre le mode hosted et Firefox
Le mode hosted et la version compilée n'ont pas forcément le même comportement et la plupart du temps cela peut être révélateur d'un problème dans le code (firefox est plus tolérant sur certaines erreur que le navigateur GWT)

Un composant graphique ne se crée pas ou ne s'affiche pas
Plusieurs solutions et raisons possibles :
  • Dans le constructeur on a essayé d'accéder à quelque chose qui n'était pas encore instancié (tous les composants semblent être "lazy rendered", ce qui peut poser des problèmes). Dans ce cas là il faut isoler la partie du code qui pose problème et décaler son exécution juste avant l'affichage final du composant (avec un  PanelListener par exemple et la méthode onShow)
  • La taille a mal été définie : si le composant à une taille relative et qu'aucun de ses parents n'a de taille précisément définie alors il aura une taille de 0. On peut tester si le problème vient de la en donnant une taille fixe en pixel au composant et en vérifiant s'il apparaît alors.
  • Si le conteneur de l'élément a un  BorderLayout, vérifier si on a bien mis quelque chose dans la zone centrale si ce n'est pas le cas, ça ne s'affichera pas correctement, l'ordre d'insertion des éléments est important aussi.

 TabPanel : un des onglets affiche le contenu des précédents

Des éléments verticaux ne s'empilent par correctement ou ont des tailles incorrectes
Il faut utiliser le  RowLayout au lieu du  VerticalLayout (qu'on serait tenté d'utiliser vu son nom), car il fonctionne mieux et permet aussi de spécifier des tailles en pourcentages.

Bugs dans Eclipse avec GWT
 EventObject, une classe assez utilisée pour la gestion des évènement du dom, pose des problèmes à Eclipse qui n'arrive pas à importer automatiquement le package correspondant (même en cliquant sur la croix rouge dans le fichier, il ne propose rien), il faut donc rajouter l'import à la main : import com.gwtext.client.core. EventObject;

Changer l'aspect de l'application
  • Il faut modifier les images dans le répertoire /js/ext/ressources/images avec lesquelles sont construites les ongles et les boutons et les dégradés des en têtes de fenêtre.
  • Modifier aussi le fichier CSS ext-all.css (ou recopier les règles dans un fichier qu'on ajoutera) situé dans /js/ext/ressources/css/ qui contient les couleurs des bordures des fenêtres et des composants