Bonjour tout le monde,
j'utilise EXT-GWT 2.0.1 et GWT 1.7.0. J'aimerais afficher des données récupérées de ma base de données dans une grid en utilisant un ListStore.
En fait, j'ai une table Personne dans ma base que j'ai représentée à l'aide d'un java bean. à partir de ce java bean, je récupère les données de la table personne et je les transmet au ListStore à travers un service RPC pour les afficher dans la grid. Voici les codes de mes classes:
- Le java bean personne qui est créé dans un package à part que client comme suit:
Remarque: La classe Connexionbdd gère la connexion à la bdd, les requêtes de sélection, de mise à jour, et le next du ResultSet
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80 package com.essai.essaibdd.data; import java.io.Serializable; import java.sql.*; import java.util.ArrayList; import java.util.List; import com.extjs.gxt.ui.client.data.BeanModel; //Le javaBean Personne public class Personne extends Connexionbdd implements Serializable{ //Les variables private int numero; private String nom; private String prenom; private String motdepasse; //le constructeur public, sans aucun type de retour public Personne (){ } /*************************les getters et les setters*****************************/ public int getNumero(){ return this.numero; } public String getNom(){ return this.nom; } public String getPrenom(){ return this.prenom; } public String getMotDePasse(){ return this.motdepasse; } public void setNumero(int numero){ this.numero=numero; } public void setNom(String nom){ this.nom=nom; } public void setPrenom(String prenom){ this.prenom=prenom; } public void setMotDePasse(String motdepasse){ this.motdepasse=motdepasse; } /**************************************************************************************/ /*******************Code métier pour la classe personne*******************************/ //sélection de toutes les personnes et les mettre dans une List public List listePersonne(){ ArrayList <Personne> v=new ArrayList <Personne>(); Personne p=new Personne(); System.out.println("v vide: "+v.isEmpty()); try{ lire("select * from personne"); while (suivant()){ p.setNumero(resultat.getInt("numero")); p.setNom(resultat.getString("nom")); p.setPrenom(resultat.getString("prenom")); p.setMotDePasse(resultat.getString("motdepasse")); v.add(p); } } catch (SQLException exx){ System.out.println("La sélection de toutes les personnes a échoué"); } return v; } /**************************************************************************************/ }
Ensuite, je crée un service liste() qui retourne une liste contenant tous les enregistrements de la table Personne pour les mettre dans le store. le code de ce service est comme suit:
et dans mon entryPoint, je fais appel à ce service pour remplir le ListStore en utilisant un RpcProxy et l'ajouter à la grid. Voici le code de l'EntryPoint
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package com.essai.essaibdd.server; import java.util.ArrayList; import java.util.List; import com.essai.essaibdd.client.PersonneService; import com.essai.essaibdd.data.Personne; import com.extjs.gxt.ui.client.data.BeanModel; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.server.rpc.RemoteServiceServlet; public class PersonneServiceImpl extends RemoteServiceServlet implements PersonneService { //déclaration du bean Personne p=new Personne(); public List liste(){ return p.listePersonne(); } }
mais à l'exécution, la grid apparaît vide, sans les données, et j'ai le message d'erreur suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101 public class Essaibdd implements EntryPoint { //Les variables Viewport view=new Viewport(); ServiceDefTarget endpoint; PersonneServiceAsync pers; ListStore <BeanModel>store; Grid <BeanModel>grid; ColumnModel cm; AsyncCallback callback1; /** * This is the entry point method. */ public void onModuleLoad() { //Définition du proxy pers=(PersonneServiceAsync)GWT.create(PersonneService.class); endpoint=(ServiceDefTarget)pers; String moduleRelatvieURL=GWT.getModuleBaseURL()+"personne"; endpoint.setServiceEntryPoint(moduleRelatvieURL); //préparer le store //création du RpcProxy pour apporter les données à distance //grâce à liste RpcProxy<BeanModel> proxy = new RpcProxy<BeanModel>() { @Override public void load(Object loadConfig, AsyncCallback cb) { pers.liste(cb); } }; //création du reader BeanModelReader reader = new BeanModelReader(); //Création du ListLoeader ListLoader loader = new BaseListLoader(proxy, reader); //création du store store = new ListStore<BeanModel>(loader); loader.load(); view.setLayout(new AbsoluteLayout()); /**********Grid***********/ ContentPanel gridp=new ContentPanel(); gridp.setLayout(new FitLayout()); //liste des colonnes ArrayList<ColumnConfig> columns=new ArrayList<ColumnConfig>(); ColumnConfig col=new ColumnConfig(); //première colonne numero col.setId("numero"); col.setHeader("Numero"); col.setWidth(100); columns.add(col); //deuxième colonne du nom col=new ColumnConfig(); col.setId("nom"); col.setHeader("Nom"); col.setWidth(120); columns.add(col); //troisième colonne du prénom col=new ColumnConfig(); col.setId("prenom"); col.setHeader("Prénom"); col.setWidth(120); columns.add(col); //quatrième colonne du mot de passe col=new ColumnConfig(); col.setId("motdepasse"); col.setHeader("Mot de Passe"); col.setWidth(120); columns.add(col); //création d'un modèle de colonne qui va contenir nos colonnes //et les mettre dans le GRID cm=new ColumnModel(columns); //construction de la grid grid=new Grid <BeanModel>(store, cm); //sélection d'une seule ligne à la fois grid.getSelectionModel().setSelectionMode(SelectionMode.SINGLE); gridp.add(grid); gridp.setSize(500, 300); view.add(gridp); RootPanel.get().add(view); } }
Et là, je ne comprends pas où est le problème. Est ce que vous auriez une solution, ou une autre méthode pour afficher des données d'une bdd dans une grid?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 Starting Jetty on port 8080 jetty-6.1.x Started SelectChannelConnector@0.0.0.0:8080 Exception while dispatching incoming RPC call 304 - GET /Essaibdd.html (127.0.0.1) 304 - GET /Essaibdd.css (127.0.0.1) 304 - GET /gxt/flash/swfobject.js (127.0.0.1) 304 - GET /essaibdd/essaibdd.nocache.js (127.0.0.1) 304 - GET /gxt/css/gxt-all.css (127.0.0.1) 304 - GET /essaibdd/clear.cache.gif (127.0.0.1) 304 - GET /essaibdd/hosted.html?essaibdd (127.0.0.1) 304 - GET /essaibdd/gwt/standard/standard.css (127.0.0.1) Loading an instance of module 'essaibdd' Rebinding com.essai.essaibdd.client.PersonneService Invoking <generate-with class='com.google.gwt.user.rebind.rpc.ServiceInterfaceProxyGenerator'/> Generating client proxy for remote service interface 'com.essai.essaibdd.client.PersonneService' Analyzing 'com.essai.essaibdd.client.PersonneService' for serializable types Analyzing methods: public abstract java.util.List liste() Return type: java.util.List java.util.List Verifying instantiability java.util.Vector<? extends java.lang.Object> Checking all subtypes of Object which qualify for serialization com.extjs.gxt.ui.client.data.BaseListLoadResult<Data> Verifying instantiability com.extjs.gxt.ui.client.data.BasePagingLoadResult<? extends java.lang.Object> Checking parameters of 'com.extjs.gxt.ui.client.data.BasePagingLoadResult<? extends java.lang.Object>' Checking type argument 0 of type 'com.extjs.gxt.ui.client.data.BasePagingLoadResult<Data>' because it is exposed as an array with a maximum dimension of 1 in this type or one of its subtypes java.lang.Object[] Analyzing component type: java.lang.Object In order to produce smaller client-side code, 'Object' is not allowed; consider using a more specific type 304 - GET /essaibdd/clear.gif (127.0.0.1) Server class 'com.google.gwt.json.client.JSONException' could not be found in the web app, but was found on the system classpath Adding classpath entry 'file:/C:/eclipse/plugins/com.google.gwt.eclipse.sdkbundle.win32_1.7.0.v200907131018/gwt-windows-1.7.0/gwt-user.jar' to the web app classpath for this session More info: file:/C:/eclipse/plugins/com.google.gwt.eclipse.sdkbundle.win32_1.7.0.v200907131018/gwt-windows-1.7.0/doc/helpInfo/webAppClassPath.html 500 - POST /essaibdd/personne (127.0.0.1) 57 bytes Request headers Accept: */* Referer: http://localhost:8080/essaibdd/hosted.html?essaibdd Accept-Language: fr Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; InfoPath.1; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) Host: localhost:8080 Connection: Keep-Alive Content-Type: text/x-gwt-rpc; charset=utf-8 Content-Length: 129 Cache-Control: no-cache Response headers Content-Type: text/plain; charset=iso-8859-1
Merci d'avance pour votre aide.
Partager