# Java > Dveloppement Web en Java > Servlets/JSP >  Remplissage d'une liste droulante en JSP

## alen22

salut,

mon but est de remplir une liste droulante dans une page JSP  travers

une servlet.

la servlet dois retourne une liste des String.

et dans la page jsp je dois parcourir cette liste de String et  l'aide de cette liste je dois remplir la liste droulante.

si on parle un peu de contenu de cette liste de String  ces sont les noms de mes societes qui sont rcuprs de fichier data.xml



```

```

donc je dois mettre dans la servlet le code java qui dois parser ce fichier et qui retourne une liste de String  

pour ce code c'est celle ci et il est test



```

```

pour la page jsp  je pense que je dois mettre un code comme celle ci



```

```


et pour la servlet elle doit contient autre que le code java qui j'ai dj mentionn (code de parcour de fichier data.xml)

cette ligne 

```
request.setAttribute("socity",liste);
```

j'espre que je peux trouvez une solution pour mon problme

merci d'avance

----------


## ninlock

Bonjour,

c'est quoi le problme exactement?

tu fait request.setAttribute dans ta servlet? est-ce que tu rcupre le contenu de ta liste dans ta jsp?
Essaye de voir  quel moment tu ne peut plus rcuprer ta liste, car ton code pour la liste droulante devrait t'afficher quelque chose si tu positionne bien ta liste de valeur dans la requte.

----------


## alen22

moi je vous donne quel dois contenu la servlet et quel dois envoyer comme donn vers la page jsp (bien sur elle dois envoi une liste de String (en d'autre terme c 'est les nom des socits qui sont rcupr de fichier data.xml)

et je vous donne aussi le code java grce auquel j'arrive a parser ce fichier 

et je veux savoir la structure final de servlet( o je dois mettre le code de parser le fichier (dans la methode doGet ou doPost  ou Service))

----------


## noOneIsInnocent

Bonjour

si j' tais toi je mettrais le code qui permet de parser le fichier XML dans une classe Metier et tu appelles une mthode de cette classe mtier  partir de la mthode doGet  de ta servlet (  condition que tu accdes  ta servlet avec une mthode HTTP GET)

----------


## alen22

peu tre votre solution ressemble un peux difficile pour moi

je pense que je peu mettre tous dans la servlet( je parle de code qui parcoure le fichier.xml)

et pour la page jsp

je pense quel dois etre comme celle ci



```

```



et pour le fichier web.xml 

```

```


et pour le servlet  

```

```



comme je dis le principe est simple c'est de remplir une liste deroulante grace 

a une servlet qui elle qui va parcourir le fichier data.xml

avec bien sur le contenu de fichier data.xml est 

```

```


SVP  s'il y'a une erreur au niveau de servlet ou au niveau de la page  jsp

j'espre qui vous pouvez m'aidez

merci d'avance

----------


## alen22

je teste ce code mais il m'affiche cette erreur



```

```

----------


## noOneIsInnocent

Est-ce que vous pouvez au moins nous donner un trace d'erreur ?
La faon que j'ai indiqu est simple  mettre en uvre et permet la sparation des couches, en l'occurrence l c'est le mtier et le contrleur

code de la servlet



```

```


code mtier 



```

```

En faisant comme a , vous pourrez appeler le parsing du mme fichier XML depuis une autre classe (servlet ou autre)

Il se peut que ce code ne compile pas car je l'ai cris  la vole ...
je vous laisse faire le reste

NB: donnez nous une trace d'erreur pour qu'on puisse vous aider

----------


## noOneIsInnocent

Il y a deux points

1)je lis que la servlet s'appelle MaServlet et dans le fichier web.xml vous l'appeler TestServlet 

2) Qui appelle la JSP ?
pour que a marche il faut que la servlet MaServlet appelle la JSP en faisant un forward vers la JSP

----------


## alen22

merci pour la reponse 

je suivre exactement votre dmarche

et je cre 

```

```




```

```

et pour la page jsp



```

```

pour le fichier web.xml

```

```


l'erreur est :

```

```


peu tre il n'arrive pas  pointer vers le fichier data.xml  que je le met dans un dossier qui s'appelle basexml
qui a le mme niveau que  :java Resources :src (je parle de dossier basexml)

n'oubli pas que la class ParseXmlFile  se trouve dans un pakage "monpakage" qui est lui mme sous src

c 'est pour cela je met  ././basexml/data.xml (je remente de deux niveau et apres j'accde au fichier)



meme si je fait comme ca 

```

```

meme erreur

```

```


peut etre erreur au niveau de code de la page  jsp

----------


## noOneIsInnocent

C'est facile  savoir
tu n'as qu' faire du debug  dans ta classe Parser le pour voir le contenu de ta liste qui contient les donnes du fichier XML
ou au pire des cas tu mets du system.out



```

```

----------


## alen22

j'arrive a vrifier que je suis sur que je pointe dans le fichier data.xml

en donnant ce chemin ././basexml/data.xml

je la test a par et elle me rend les noms de socites

reste le problme est ce que cette liste est rellement envoys vers la page jsp  ou non

donc je besoin d'aide pour quelqu'un vrifier avec moi le code de la page jsp

et le code de la servlet  (surtout cote syntax)

merci d'avance

----------


## alen22

pour tre sur que les donnes sont envoys de servlet vers une page jsp

si possible pouvez me donnez un exemple de code qui juste

envoie une liste de String d'une servlet vers une page jsp et bien sur la page jsp  rcupr cette liste

car apparament la servlet ne peux pas envoi une liste de String  elle peut juste 

envoi des donns simples comme String ou int ou float

merci d'avance

----------


## ninlock

Salut, j'ai regard un peu ton problme, mais j'aurai besoin de quelques prcisions.
Comment tu accde  ta servlet, tu saisi :
http://localhost:8080/_contextRoot_/_url-pattern_?

Si tu fait bien a, est ce que tu a le message sur ton navigateur comme quoi la methode doGet ne peut pas tre rsolu sur cette url?

Si tu es dans ce cas la, ce qui doit tre certainement le cas car j'ai russi a obtenir le mme message d'Exception que toi.
C'est que dans ton doGet il ne faut pas faire super.doGet(...). De plus pour info un constructeur comme tu a mis ne sert  rien et en plus tu t'en servira jamais car c'est ta jvm qui est charg d'instancier la servlet.

Donc en conclusion met ton code de doPost dans doGet et retest, tu ne devrai plus avoir l'erreur (le doPost te permet de passer des parametre a la servlet quand tu l'appel, ici ce n'est pas ce que tu fait, de plus ci tu ecrit l'url dans la barre d'url du navigateur, cela appel forcement un doGet).

Tiens moi au courant

----------


## noOneIsInnocent

ou encore dans ta mthode doGet tu fais



```

```

comme a quelque soit le type de requte (enfin GET ou POST)  elle sera traite

----------


## alen22

merci pour la rponse

j'essaye avec 

```

```

et pour 

```

```

et pour la page jsp



```

```

mais malheureusement l'erreur reste 

```

```

----------


## ninlock

T as lu mes question et ma rponse?
Fait comme moi, j'ai pris exactement le mme code que toi sauf pour le chemin du fichier et a marche, alors rappel pas le doPost, deplace ton code de doPost dans doGet() et *supprime bien le super.doGet(..)* et surtout n'oubli pas de bien mettre ta page jsp dans webContent. Dit moi ce que le navigateur affiche

----------


## alen22

vraiment je suis etonnee comment ce code ca marche lorsque vous tester et quant je le teste il m'affiche toujours



```

```

a mon avie d'apres cette erreur la liste n'est pas envoy vers la page jsp

vous dite que vous testez le mme code 
donc si possible pouvez m'envoyer votre code 

je parle de servlet et jsp 

pour mon cas le code de servlet est :

```

```

et pour la jsp



```

```

----------


## ninlock

Essaye sans le constructeur car c'est vraiment un copier coll de ton code sans le public TestServlet (le constructeur donc).
Et tout ton code jsp est bon car j'ai rien chang du tout.

donc la servlet :


```

```


la jsp, maPageJsp.jsp :


```

```

parserXml (j'ai mis mon fichier sur mon disque d:/ c'tait plus rapide pour moi mais, peut importe c'est pas a ton problme apparemment):


```

```

web.xml : 


```

```

et arborescence du projet (Dynamic Web Project) non exaustive:
-testServletSimple
-src (les source java, peu importe ta strucure du moment que a compile)-package-webContent-META-INF-WEB-INF-web.xml-maPagJsp.jsp
Et donc dans mon navigateur j'crit l'url : http://localhost:8080/testServletSimple/servlet.do

Voila, je ne vois pas comment t'aider plus, mais n'hsite pas si quelque chose n'est pas clair.

----------


## noOneIsInnocent

j'ai l'impression que tu as un problme dans ta cinmatique 

dans ta JSP maPageJsp.jsp tu as un form qui appelle ta servlet ServletTest avec la mthode POST et dans ta servlet ServletTest tu appelles ta JSP  maPageJsp.jsp

Au final qui appelle quoi en premier. Si tu appelles ta servlet en premier a devrait fonctionner 

Est-ce que tu as bien mis dans ton navigateur http://localhost:8080/contextRoot/ServletTest ?

----------


## alen22

merci pour vos rponses

mais voila l'erreur


```

```


pourtant si je fait comme ca



```

```

il m'affiche une liste deroulante avec comme valeur  (hp et ibm)

----------


## alen22

peut etre quand vous dite que vous tester ce code et ca marche vous avez raison

j'arrive presque  connaitre le problme


juste comme je dis quand je met 

```

```

ca marche la liste est envoyer et dans la page elle affiche la liste deroulante

mais quand j'enleve le commentaire l'erreur qui est afficher est autour de cette ligne 

```
SAXBuilder sxb=new SAXBuilder();
```

juste je veux savoir dans la class  " ParseXmlFile"

quelle est les import 

car dans mon cas



```

```

comme vous voyer je telecharger  jdom.jar

peu etre la version de jdom qui pose le problme

juste montre moi vos import

franchement je mettre ce sujet comme rsolu


merci d'avance

----------


## alen22

dsole pour mes question

mais je penses qu'il y'a des astuces qui sont un peu bizares

comme je dis la class "ParseXmlFile" retourne un liste de string et qui ne parse pas le fichier testvrai.xml  avec autre condition que les codes de parse le fichier .xml soit en commentaire  car si je fait comme ca  

```

```

elle affiche meme erreur


```

```

donc peu n'importe quand quand je met cette ligen 

```
SAXBuilder sxb=new SAXBuilder();
```

sans l'utiliser l'erreur existe toujours

mais si j'eris une simple class java

```

```

et je fait run as java Appilication  elle parse le fichier xml et affiche le resultat correcte

donc je pense  que le serveur jboss qui est le respensable de cette erreur

peu tre qui fait un conflit ou que je dois des fichier .jar dans le lib dee jboss elle mme

----------


## ninlock

pour la liste statique("hp", "ibm"), cela prouve que la solution que je t'ai donn fonctionne. 
Par contre l'erreur sur SAxBuilder c'est un autre problme, la librairie jDom n'est pas charges au dploiement, ou qu'il y a un confli entre la version que tu utilise sous eclipse et celle de ton serveur.
Commence par vrifier que ton MANIFEST contint bien le jar jDOM.

----------


## alen22

oui ca fonctionne mais avec des valeurs statiques

pur le fichier MANIFEST



```

```

quant j'excute le code le problme est dans cette ligne



```
java.lang.NoClassDefFoundError: org/jdom/input/SAXBuilder
```


et si je change l'ordre dans la class  ParseXmlFile



```

```


l'erreur toujours 

```
java.lang.NoClassDefFoundError: org/jdom/input/SAXBuilder
```

pourtant la ligne 

```
Document document = null;
```

ne pose aucun  problme malgres elle fait appel  

```
import org.jdom.Document;
```

donc qui est un peu logique que jdom est dploy dans le serveur

mais peu etre votre rsolution est correcte car cette ligne 

```
SAXBuilder sxb=new SAXBuilder();
```

creer un objet de type SAXBuilder

----------


## alen22

oui vous avez raison j'ai une version de jdom sous eclipse et une autre sous le dossier jbos\jboss-4.2.2.GA\server\default\lib

et quand je supprime celle de jdom sous eclipse et je laisse juste de jdom.jar sous lib de 


mais quand j'exeute le fichier rien n'est afficher 
et dans la console l'erreur est 

```

```

je sais que l'erreur et un peu long

----------


## alen22

je veux savoir est ce que  votre avie problme de version de jboss
ou de jdom 
et pour jdom.jar pour mon ca je le met sous jbos\jboss-4.2.2.GA\server\default\lib

pour la premier ca je fais proprites->java build path ->add external jars ->jdom.jar

et comme vous dite que peut etre il y'a comflis j'elimine jdom.jar de java build path

et je laisse juste jdom.jar dans jbos\jboss-4.2.2.GA\server\default\lib

----------


## ninlock

A mon avis la version de jdom que t utilise dans eclipse est plus rcente que celle du serveur. Donc pour tre sr que tu n'est pas de code a changer, le mieux est de mettre le jdom de ton build path dans le dossier lib du derveur jboss, et d'ajouter la librairie de jboss au build path.

----------


## alen22

la version de jboss est jboss-4.2.2  et la version de jdom.jar est indique dans le fichier MANIFEST

comme je dis j'ai deja je met jdom.jar dans le  lib du serveur jboss
et je l'limine de built path 

mais pour cette ligne tu veux dire quoi "ajouter la librairie de jboss au build path"

j'ai dj lier mon projet JEE avec le serveur d'application jboss

mais je veux savoir quel version vous utilisez de jdom et jboss

merci d'avance

----------


## ninlock

est ce que que dans le build path eclipse tu as bien ajouter la librairie li a jboss?
buildPath>ajouter librairie>lib jboss(je sais pas exactement le nom de la lib j utilise pas jboss mais c'est le mme principe pour tout les serveur)

----------

