Retour d'expérience sur GWT-EXT
Par PlaceOweb le vendredi, mars 21 2008, 00:40 - JAVA - Lien permanent
Après avoir avoir essayer le framework GWT + EXT, voici quelques retours sur les problèmes rencontrés.
Les versions utilisés
- gwtext-2.0.2 et gwtext-2.0.3
- ext-2.0.2
- gwt-linux-1.4.61
FormPanel en fileUpload
Récupération des états de transmission de formulaire
Depuis le GWT, on le FormListener ne récupère pas l'action onActionComplete. Ceci est sûrement un bug du GWT, car depuis les autres navigateurs IE et Firefox cela fonctionne.
Le Form . ErrorReader ne fonctionne pas avec Form . FileUpload mis à true
Il est n'est pas possible de récupérer (par exemple via JSON) le retour du servlet d'upload. Soit le masque d'attente tourne en boucle, soit le retour est proposé au téléchargement au lieu d'être interprété et de marquer certains champs en erreur. Form . ErrorReader doesn't work with Form . FileUpload set to true
Envoi d'un paramètre Url au format tableau
Lorsque l'on veut evonver un tableau d'objet en html, il est courant d'envoyer plusieurs fois la même variable identiquement nommée.
UrlParam[] params = new UrlParam[2]; params [0] = new UrlParam("param", "value1"); params [1] = new UrlParam("param", "value2");
Le souci étant que par ce biais on écrase les les valeurs. Heureusement changhua0313 a rajouter un constructeur paramètres acceptant un tableau de String qui vous permettra d'utiliser
UrlParam(String, String[])
Une autre alternative est de concaténer à l'envoi vos valeurs en les séparant par un caractère connu, par exemple ; ou , Ensuite sur votre servlet de faire l'opération inverse pour obtenir un tableau de valeurs.
Envoi d'un paramètre Url null
new UrlParam[] { new UrlParam("id",null) }
Côté servlet, request.getParameter("id") vous retournera non pas null mais la String "null"
Store
setDefaultSort("monTri", SortDir.ASC); générera 2 paramètres dans votre url : sort=monTri et dir=ASC
Recharger un store,
- soit vous n'utilisez la méthode store.load(start, limit) qui précise le début (start) et la limite (limit)
- soit vous passez par le méthode qui déclare les paramètres store.load(params). Mais dans ce cas vous gardez uniquement le tri par défaut (définit par setDefaultSort). Et vous perdez la pagination. Le remède :
- store.setBaseParams(baseParams) + store.(re)load()
- store.setBaseParams(baseParams) + store.load(0,50)
- store.setBaseParams(baseParams) + définir les 2 paramètres : start et limit correspondant à la méthode store.load(start, limit)
// Choisissez parmis les méthodes disponibles : // store.setBaseParams(baseParams) // store.load() // store.load(params) // store.load(start, limit) // store.load(params, add) // store.reload() // store.reload(params) // store.reload(params, add)
Colorier une cellule de d'une grille (pas avec l'attribut hml bgcolor mais avec l'attribut de style background)
new ColumnConfig() { { setHeader("MaColonne"); setDataIndex("donneeColonne"); setWidth(100); setSortable(true); setRenderer(new Renderer() { public String render(Object value, CellMetadata cellMetadata, Record record, int rowIndex, int colNum, Store store) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append(record.getAsString("colonneA")==null?"":(record.getAsString("colonneA"))); if( record.getAsString("colonneB") != null ) stringBuilder.append(" (Détail : "+record.getAsString("colonneB")+")"); // TODO colorier la cellule // cellMetadata.setHtmlAttribute("bgcolor=\"red\""); cellMetadata.setHtmlAttribute("style=\"background:red;\""); return stringBuilder.toString(); } }); } }