bonsoir
je cherche a coder une listebox dans un page jsp, la listebox se remplit suite a une requette SQL.
l'objet listbox appartiens a quel class et les methodes ..?
faut t'il invoquer la listebox depuis une page JSP ou Servlet ???
bonsoir
je cherche a coder une listebox dans un page jsp, la listebox se remplit suite a une requette SQL.
l'objet listbox appartiens a quel class et les methodes ..?
faut t'il invoquer la listebox depuis une page JSP ou Servlet ???
Tu peux mettre le résultat de la requête dans une collection de type ArrayList par exemple, puis la mettre dans le scope request pour la rendre accessible depuis la jsp et ensuite, dans la jsp, tu utilises les tags select et option.
Si par exemple la liste est une ArrayList de String, dans la jsp, tu peux l'afficher comme ceci :
et pour récupérer l'élément sélecté dans la servlet exécutée au submit du formulaire :
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 <jsp:useBean id="uneListe" scope="request" type="java.util.ArrayList"/> <form method="POST" action="<%=request.getContextPath()+"/pathDeLaServlet"%>"> <select name="itemSelected"> <% for (int i=0; i<uneListe.size(); i++) { String item= (String) uneListe.get(i) ; %> <option value="<%=item%>"><%=item%></option> <% } %> </select> </form>
Code : Sélectionner tout - Visualiser dans une fenêtre à part String itemSelected = request.getParameter("itemSelected") ;
bonjour,
merci pour le code, mais je doit remplir ma listebox via une requete SQL,
je me demande commen faire, et sur tout je pence qu'il faut coder le remplissage de la listebox dans une servlet plutot que dans une jsp,
ca me semble plus securiser, je me trompe??
CDLT
Philo
Le code mis dans la jsp est celui qui permet d'afficher le contenu de la liste sous forme de liste déroulante mais la constitution de la liste à partir du résultat d'une requête SQL, doit se faire dans une méthode d'une classe.
Tu fais appel à cette méthode dans la servlet et tu mets la liste dans le scope request pour pouvoir y accèder via la jsp.
Pour constituer une liste à partir du résultat d'une requête SQL, tu peux faire quelque chose du style :
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 ArrayList uneListe = new ArrayList(); try { Connection connection = // ici, mettre le code permettant de récupérer la connexion Statement stmt = connection.createStatement(); ResultSet rs = stmt.executeQuery("select nomDuChamp from nomTable"); while (rs.next()) { uneListe.add(rs.getString("nomDuChamp")); } rs.close(); stmt.close(); } catch (SQLException e) { // code de gestion de l'erreur }
bonjour,
suite a votre code :
ArrayList uneListe = new ArrayList();
comment je declare la class ArrayList ??
Philo
ArrayList est une classe du package java.util.
Il suffit donc de faire un import de cette classe au début de la servlet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part import java.util.ArrayList ;
Merci,
j'ai du mal a declarer la class de remplissage??
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public ListePersonne listboxfilms () // je sais pas { ArrayList listboxfilms = new ArrayList(); ;
Ta méthode devrait plutôt renvoyer un objet de type ArrayList.
Pourquoi ne pas t'inspirer du code que je t'ai mis précédemment ?
As-tu déjà écrit le code permettant de te connecter à la base ?
Est-ce que cela fonctionne ?
Quels propriétés de ta table veux-tu utiliser pour l'affichage de la liste déroulante ?
Si tu veux de l'aide, il faut en dire un peu plus sur ce que tu as déjà fait et ce que tu souhaites afficher.
oui en faite j'ai ecrit plusieurs modules qui accede a une base Mysql
avec un connecteur JDBC, cela marche tres bien mais sur mon dernier
module je doit coder 2 listebox , pour le choix des articles ,
et la je me pose des questions ,
voici la class que j'ai ecrit grace a ton aide,
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 public ListePersonne listboxfilms () // gestion de la listebox films { ArrayList listboxfilms = new ArrayList(); ; try { //listboxfilms listbox = new listboxfilms(); Statement st = cnx.createStatement(); ResultSet rs = st.executeQuery("select nom from films"); while (rs.next()) { listboxfilms.add(rs.getString("nom")); } rs.close(); st.close(); } catch (SQLException e) { displayException(e); } }
En faite je n'arrive pas a declarer a nommer ma class -- Public .....
philo
Ta méthode doit renvoyer un objet de type ArrayList.
Il faut donc plutôt coder ceci :
Et ensuite, dans ta servlet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part public ArrayList listboxfilms ()
en remplaçant NomDeTaClasse par le nom de la classe dans laquelle tu as codé la méthode listboxfilms.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 NomDeTaClasse nomInstanceClasse=new NomDeTaClasse() ; ArrayList listboxFilms = nomInstanceClasse.listboxfilms() ; request.setAttribute("listboxFilms",listboxFilms) ;
je ne comprens pas cette partie :
car monInstanceClasse c'est listeboxfilms car ca veux dire qu'on invoque
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Code : NomDeTaClasse nomInstanceClasse=new NomDeTaClasse() ; ArrayList listboxFilms = nomInstanceClasse.listboxfilms() ; request.setAttribute("listboxFilms",listboxFilms) ;
le constructeur lui meme !!!
Philo
Je pense que tu devrais suivre un bon tutoriel Java.
Enfin, listeboxfilms est une méthode d'une classe.
Pour faire appel à cette méthode, tu es obligé de créer une instance de la classe, à moins de la déclarer comme static.
Tu dois donc avoir une classe, que moi j'ai appelé NomDeTaClasse parce que je ne sais pas comment tu l'as nommé, dans laquelle tu as codé la méthode listboxfilms :
et dans la servlet, pour faire appel à la méthode listboxfilms :
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 public class NomDeTaClasse { public ArrayList listboxfilms () // gestion de la listebox films { ArrayList listboxfilms = new ArrayList(); try { //listboxfilms listbox = new listboxfilms(); Statement st = cnx.createStatement(); ResultSet rs = st.executeQuery("select nom from films"); while (rs.next()) { listboxfilms.add(rs.getString("nom")); } rs.close(); st.close(); } catch (SQLException e) { displayException(e); } return listboxfilms ; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 NomDeTaClasse nomInstanceClasse=new NomDeTaClasse() ; ArrayList listboxFilms = nomInstanceClasse.listboxfilms() ;
merci c_nvy pour tout ce détail![]()
Partager