IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

Remplissage d'une liste déroulante en JSP


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Par défaut Remplissage d'une liste déroulante en JSP
    salut,

    mon but est de remplir une liste déroulante 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 déroulante.

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?xml version="1.0" encoding="UTF-8"?>
    <societes>
       <societe>
          <nom>tochiba</nom>
          <domaine>info</domaine>
       </societe>
     
     
       <societe>
          <nom>HR</nom>
          <domaine>info</domaine>
       </societe>
     
    </societes>
    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é

    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
    SAXBuilder sxb=new SAXBuilder();
                    List<String> liste=new ArrayList<String>();
    		try {
    			Document document=sxb.build(new File("data.xml"));
    			Element societes=document.getRootElement();
    			List<Element> soc=societes.getChildren();
     
     
                            for(Element societe:soc){
     
     
    				String nom=societe.getChild("nom").getText();
                                    liste.add(nom);
     
    			}
     
     
    		} catch (JDOMException e) {
     
    			e.printStackTrace();
    		} catch (IOException e) {
     
    			e.printStackTrace();
    		}
    pour la page jsp je pense que je dois mettre un code comme celle ci

    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
     
     
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>exemple</title>
    </head>
    <body>
    <%@ page import="java.util.ArrayList" %>
    <%
    ArrayList<String> liste = (ArrayList) request.getAttribute("socity");
    %>
     
    <select name="itemSelected">
    <%
            for (int i=0; i<liste.size(); i++)
            {
                    String item= (String) liste.get(i) ;
    %>
    	   <option value="<%=item%>"><%=item%></option>
    <%
            }
    %>
    </select>
    </body>
    </html>

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

    cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.setAttribute("socity",liste);
    j'espère que je peux trouvez une solution pour mon problème

    merci d'avance

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2008
    Messages : 34
    Par défaut
    Bonjour,

    c'est quoi le problème exactement?

    tu fait request.setAttribute dans ta servlet? est-ce que tu récupère le contenu de ta liste dans ta jsp?
    Essaye de voir à quel moment tu ne peut plus récupérer ta liste, car ton code pour la liste déroulante devrait t'afficher quelque chose si tu positionne bien ta liste de valeur dans la requête.

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Par défaut
    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 sociétés qui sont récupéré de fichier data.xml)

    et je vous donne aussi le code java grâce 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))

  4. #4
    Membre émérite Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Par défaut
    Bonjour

    si j' étais toi je mettrais le code qui permet de parser le fichier XML dans une classe Metier et tu appelles une méthode de cette classe métier à partir de la méthode doGet de ta servlet ( à condition que tu accèdes à ta servlet avec une méthode HTTP GET)

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Par défaut
    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

    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
     
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"
     import="java.util.ArrayList"%>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>exemple</title>
    </head>
    <body>
    <%
    ArrayList<String> liste = (ArrayList) request.getAttribute("listeNom");
    %>
     <form action="<%=request.getContextPath()%>/TestServlet" method="POST">
    <select name="itemSelected">
    <%
            for (int i=0; i<liste.size(); i++)
            {
                    String item= (String) liste.get(i) ;
    %>
    	   <option value="<%=item%>"><%=item%></option>
    <%
            }
    %>
    </select>
    </form>
    </body>
    </html>


    et pour le fichier web.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     <servlet>
        <description></description>
        <display-name>TestServlet</display-name>
        <servlet-name>TestServlet</servlet-name>
        <servlet-class>pakageServlet.TestServlet</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>TestServlet</servlet-name>
        <url-pattern>/TestServlet</url-pattern>
      </servlet-mapping>

    et pour le servlet
    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
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
     
    public class MaServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
     
     
        public MaServlet() {
            super();
            // TODO Auto-generated constructor stub
        }
     
    	/**
    	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		super.doGet(request, response);
    	}
     
     
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		SAXBuilder sxb=new SAXBuilder();
                    List<String> liste=new ArrayList<String>();
    		try {
    			Document document=sxb.build(new File("data.xml"));
    			Element societes=document.getRootElement();
    			List<Element> soc=societes.getChildren();
     
     
                            for(Element societe:soc){
     
     
    				String nom=societe.getChild("nom").getText();
                                    liste.add(nom);
     
    			}
                       request.setAttribute("listeNom",liste);
     
     
    		} catch (JDOMException e) {
     
    			e.printStackTrace();
    		} catch (IOException e) {
     
    			e.printStackTrace();
    		}
     
     
     
     
    	}
     
    }


    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?xml version="1.0" encoding="UTF-8"?>
    <societes>
       <societe>
          <nom>tochiba</nom>
          <domaine>info</domaine>
       </societe>
     
     
       <societe>
          <nom>HR</nom>
          <domaine>info</domaine>
       </societe>
     
    </societes>

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

    j'espère qui vous pouvez m'aidez

    merci d'avance

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Par défaut
    je teste ce code mais il m'affiche cette erreur

    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
    org.apache.jasper.JasperException: An exception occurred processing JSP page /maPageJsp.jsp at line 20
     
    17:  <form action="<%=request.getContextPath()%>/TestServlet" method="POST">
    18: <select name="itemSelected">
    19: <%
    20:     for (int i=0; i<liste.size(); i++)
    21:     {
    22:                 String item= (String) liste.get(i) ;
    23: %>
     
     
    Stacktrace:
    	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:504)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:415)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:336)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
     
     
    cause mère 
     
    java.lang.NullPointerException
    	org.apache.jsp.maPageJsp_jsp._jspService(maPageJsp_jsp.java:74)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:336)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

  7. #7
    Membre émérite Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Par défaut
    Est-ce que vous pouvez au moins nous donner un trace d'erreur ?
    La façon que j'ai indiqué est simple à mettre en œuvre et permet la séparation des couches, en l'occurrence là c'est le métier et le contrôleur

    code de la servlet

    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
     
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
     
    public class MaServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
     
     
        public MaServlet() {
            super();
            // TODO Auto-generated constructor stub
        }
     
        /**
         * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            super.doGet(request, response);
        }
     
     
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            try {
     
                       request.setAttribute("listeNom",ParseXmlFile.getInstance().getDatas());
     
                }
     
     
            } catch (JDOMException e) {
     
                e.printStackTrace();
            } catch (IOException e) {
     
                e.printStackTrace();
            }
     
     
     
     
        }
     
    }

    code métier

    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
     
     
    class ParseXmlFile {
     
    private static ParseXmlFile parser = new ParseXmlFile();
     
    private ParseXmlFile(){
     
    }
     
    public static synchronized ParseXmlFile getInstance(){
        if( parser  == null){
          parser = new ParseXmlFile();
       }
       return parser;
    }
     
    public static List<String> getDatas() throws Exception{
      SAXBuilder sxb=new SAXBuilder();
                    List<String> liste=new ArrayList<String>();
                Document document=sxb.build(new File("data.xml"));
                Element societes=document.getRootElement();
                List<Element> soc=societes.getChildren();
     
     
                            for(Element societe:soc){
     
     
                    String nom=societe.getChild("nom").getText();
                                    liste.add(nom);
     
                      return liste;
     
     
     
     
     
    }
     
     
    }
    En faisant comme ça , vous pourrez appeler le parsing du même fichier XML depuis une autre classe (servlet ou autre)

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

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

Discussions similaires

  1. Remplissage d'une liste déroulante en JSP
    Par ulysse031 dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 13/05/2011, 16h53
  2. Remplissage d'une liste déroulante d'après base
    Par nicomax34 dans le forum Langage
    Réponses: 8
    Dernier message: 31/01/2009, 14h59
  3. [phpBB] Remplissage d'une liste déroulante
    Par kitiss dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 05/01/2009, 14h11
  4. remplissage d'une liste déroulante à partir d'une autre liste
    Par monphp dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/05/2007, 12h28
  5. [MySQL] Remplissage d'une liste déroulante à partir d'une requête SQL
    Par gaucher dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 11/05/2006, 15h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo