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 :

récupération de champs dans servlet et jsp


Sujet :

Servlets/JSP Java

  1. #1
    Membre régulier Avatar de fripette
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    241
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 241
    Points : 71
    Points
    71
    Par défaut récupération de champs dans servlet et jsp
    Bonjour !
    J'ai une liste de champ numéroté de 1 à 6 (voir plus plus tard) et je n'ai pas de noms spécifiques pour ces champs.
    Un exemple parle plus :
    j'ai un formulaire de ce style :

    code champ1; site de prélèvement champ 1
    code champ2; site de prélèvement champ 2
    [...]
    code champ n; site de prélèvement champ n

    dans ma servlet, je dois donc récupérer ces champs :
    je me suis essayée à une astuce : créer une listre de String correspondant au value des champs:
    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
     
    public class ServletFichePrlvLEG extends HttpServlet{
    private String [] indice={"champ1","champ2","champ3","champ4","champ5","champ6"};
     
    void doInit(HttpServletRequest request, HttpServletResponse response) throws ServletException,
    	IOException {
    // on récupère la session de l'utilisateur
    		HttpSession session = request.getSession(true);
    		// on envoie le formulaire vide
    		session.setAttribute("nomEtablissement", "");
    		session.setAttribute("nomPreleveur","");
    		session.setAttribute("datePrelev","");
    		session.setAttribute("numFinFiche","");
     
    		for (int i=0; i<6; i++){
    			String champs=indice[i];
    			session.setAttribute("champs","");
    	           }
     
    		request.setAttribute("urlAction", (String) params.get("urlControleur"));
    		getServletContext().getRequestDispatcher((String) params.get("urlFormulaire")).forward(
    				request, response);
    		return;
        }
    void doValidationFormulaire(HttpServletRequest request,HttpServletResponse response) 
    	throws ServletException, IOException, SQLException, Exception {
     
    //		on récupère les paramètres
    		String nomEtablissement = (String)  request.getParameter("nomEtablissement");
    		String nomPreleveur=(String)request.getParameter("nomPreleveur");
    		String datePrelev=(String)request.getParameter("datePrelev");
    		String numFinFiche=(String)request.getParameter("numFinFiche");
     
    		HttpSession session = request.getSession(true);
    		for (int i=0; i<6; i++){
    			String champs=indice[i];
    			champs=(String)request.getParameter("champs");
    			session.setAttribute("champs",champs);
    	           }
     
    		//puis on le stocke dans la session
     
    		session.setAttribute("nomEtablissement", nomEtablissement);
    		session.setAttribute("nomPreleveur",nomPreleveur);
    		session.setAttribute("datePrelev",datePrelev);
    		session.setAttribute("numFinFiche",numFinFiche);
     
    		request.setAttribute("urlAction", (String) params.get("urlControleur"));
    		getServletContext().getRequestDispatcher((String) params.get("urlReponse")).forward(
    				request, response);
    	}
    }
    Peut-on faire un parsing de ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    for (int i=0; i<6; i++){
    			String champs=indice[i];
    			session.setAttribute("champs","");
    	           }
     
    ou encore :
    HttpSession session = request.getSession(true);
    		for (int i=0; i<6; i++){
    			String champs=indice[i];
    			champs=(String)request.getParameter("champs");
    			session.setAttribute("champs",champs);
    	           }
    grâce à la création d'une liste de string?

    Voici comment ca se présente dans ma page 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    <%
      // on récupère les paramètres
            String nomEtablissement=(String)session.getAttribute("nomEtablissement");
            String nomPreleveur=(String)session.getAttribute("nomPreleveur");
            String datePrelev=(String)session.getAttribute("datePrelev");
            String numFinFiche=(String)session.getAttribute("numFinFiche");
            
            String [] indice={"champ1","champ2","champ3","champ4","champ5","champ6"};
            for (int i=0; i<6; i++){
                    String champ=indice[i];
                    champ=(String)session.getAttribute("champ");
               }
                    
            String urlAction=(String)request.getAttribute("urlAction");
    %>
    [...]
    <%
              for (int i=0; i<6; i++){
                    out.println("<tr>");
                    out.println("<td>"+(i+1)+"</td>");%>
              	<td><input name="indice[i]" value="<%= indice[i]%>" type="text" size="8"></td>
              	<%out.println("</tr>");
               }
              %>
    Ceci marche parce que j'ai bien dans les input les noms de la liste indice qui apparaissent .

    Enfin ma page réponse :
    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
     
    <% // on récupère les paramètres dans la session
     
    String[] indice={"champ1","champ2","champ3","champ4","champ5","champ6"};
     
        
    String urlAction=(String)request.getAttribute("urlAction");
    %>
     
    <html>
      <head>
         <title>Fiche r&eacute;pitulative - formulaire</title>
       </head>
       <body>
       <%for (int i=0; i<6; i++){
            String champ=indice[i];
            champ=(String)session.getAttribute(champ); %>
        Champs remplis indice[i]: <%= champ%><br>
        <%} %>
       </body>
    </html>
    Auriez vous une idée de comment ca se passe dans cette situation : ce que j'aurai pu faire c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    session.setAttribute("champ1","");
    session.setAttribute("champ2","");
    [...]
    session.setAttribute("champN","");
    Mais je ne trouve pas ca du tout propre (surtout quand N est gand).
    Donc pour résumer, j'aimerai bien reformuler ma situation en une phrase mais je n'arrive pas à matérialiser cette phrase !
    Je m'y essais: comment récuperer des champs qui n'ont comme variation dans leurs noms qu'un chiffre (qui lui s'incrémente au fur et à mesure )?
    Merci de votre attention et de vos idées

    Fripette

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    511
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 511
    Points : 386
    Points
    386
    Par défaut
    Tu fais la même chose mais tu vérifies que l'objet session n'est pas null sinon tu auras une erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <body>
       <%int i=1;
           while(session.getAttribute("champ"+i)!=null){
             %>
        Champs remplis indice[i]:<%=(String)session.getAttribute("champ"+i)%><br>
        <%;
             i++;} %>
       </body>
    ou tu fais la même chose dans ta servlet et tu transfères le résultat à ta jsp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int i=1;
    StrinBuffer txt = new StringBuffer();
           while(session.getAttribute("champ"+i)!=null){
                  txt = append("Champs remplis indice["+i+"]:"+(String)session.getAttribute("champ"+i)+"<br>");
        i++}
    session.setAttribute("txt",txt.tostring());
    et dans ta jsp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <%
    //en tête de jsp
    String txt = (String)session.getAttribute("txt");
    if(txt==null)txt="";
    %>
     
    .....
     
    <body>
       <%=txt%>
    </body>
    Là tu t'approches de la structure MCV idéale à maintenir: séparation du code et de la vue

  3. #3
    Membre régulier Avatar de fripette
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    241
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 241
    Points : 71
    Points
    71
    Par défaut
    Bonjour,
    après avoir étudier ta réponse et coder un peu, je me permet de redemander de l'aide:
    Alors voilà mon script a évolué, car je n'essais pas de juste afficher la réponse dans la page j'essais aussi d'ajouter les informations à ma DB.
    Voilà la page 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
    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
     
    <%
    String urlAction=(String)request.getAttribute("urlAction");
    %>
    <html>
       <body>   	
         <form action="<%= urlAction %>" method="post">
     
        <!-- TABLE CONCERNANT LES PRELEVEMENTS -->
        <table cols="8">
        	<!-- Entête du tableau -->
            <tr>
            	<td><b>Codes pr&eacute;l&egrave;vement</b></td>
              	<td>Modalit&eacute;</td>
              	<td>Exutoire</td>
              	<td>T&deg;C</td>
              	<td>T&deg;C max</td>
               	<td>Heure du pr&eacute;l&egrave;vement</td> 
            </tr> 
     
            <% for (int i=1;i<7;i++){
              String champPrelevement=(String)session.getAttribute("idPrelevement"+i);
              String champModalite=(String)session.getAttribute("modalite"+i);
              String champExutoire=(String)session.getAttribute("exutoire"+i);
              String champTemp=(String)session.getAttribute("temp"+i);
              String champTempMax = (String)session.getAttribute("tempMax"+i);
              String champHeure =(String)session.getAttribute("heure"+i);
              %>         			
    		<tr>
    			<td><input name=<%=champPrelevement %> value="" type="text" size="25"></td>
     
           		<td><SELECT name=<%= champModalite %> >					
    				<option value="1erjet-HorsActivite"> 1erjet-HorsActivit&eacute; </option>
    				<option value="1erjet-EnsActivite"> 1erjet-EnActivit&eacute; </option>							
    			</SELECT></td>
     
    			<td><SELECT name=<%= champExutoire %> >					
    				<option value="Mi"> Mitigeur </option>
    				<option value="Me"> M&eacute;langeur </option>			
    			</SELECT></td>
     
    			<td><input name=<%= champTemp %> value="" type="text" size="30"></td>
    			<td><input name=<%= champTempMax %> value="" type="text" size="30"></td>
    			<td><input name=<%= champHeure %>  value="" type="text" size="30"></td>			
    		</tr>
        	<% } %>
        </table>
        <td><input type="submit"  name="action" value="actualisation"></td>
       </body>
    </html>
    et la page réponse :
    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
     
    <%
    String urlAction=(String)request.getAttribute("urlAction");
    %>
    <html>
       <body>   	     
         <form action="<%= urlAction %>" method="post">    
         <!-- TABLE CONCERNANT LES PRELEVEMENTS -->
     
         <table BORDER="1">          
            <% for (int i=1;i<7;i++){
              champPrelevement=(String)session.getAttribute("idPrelevement"+i);
              %>         			
    		<tr><td><input name=<%=champPrelevement %> value=<%=champPrelevement %> type="text" size="25"></td></tr>
     
    		<% } %>
    	</table>
      </body>
    </html>
    je fais les récupérations des variables directement lors de leur utilisation.

    Voici ce qu'il se passe dans ma 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
    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
     
    	void doActualisation(HttpServletRequest request,HttpServletResponse response) 
    	throws ServletException, IOException, SQLException, Exception {
     
    //		on récupère les paramètres
     
    		String idPrelevement1 =(String) request.getParameter("idPrelevement1");
    		String idPrelevement2 =(String) request.getParameter("idPrelevement2");
    		String idPrelevement3 =(String) request.getParameter("idPrelevement3");
    		String idPrelevement4 =(String) request.getParameter("idPrelevement4");
    		String idPrelevement5 =(String) request.getParameter("idPrelevement5");
    		String idPrelevement6 =(String) request.getParameter("idPrelevement6");
     
    		/*----- vérification des paramètres -----*/
    		ArrayList<String> erreursAppel = new ArrayList<String>();
     
    		if (idPrelevement1.equals("") && idPrelevement2.equals("") && idPrelevement3.equals("") 
    				&& idPrelevement4.equals("") && idPrelevement5.equals("") && idPrelevement6.equals("")) {
    			erreursAppel.add("Vous devez remplir au moins un Identifiant prélèvements");
    		}
    //		des erreurs dans les paramètres ?
    		if (erreursAppel.size() != 0) {
     
    			// on envoie la page d'erreurs
    			request.setAttribute("erreurs", erreursAppel);
     
    			//request.setAttribute("urlAction", (String) params.get("urlControleur"));
    			getServletContext().getRequestDispatcher(urlErreurs).forward(
    					request, response);
    			return;
    		}
     
    		// Les paramètres sont bons alors on les mémorise
    		HttpSession session = request.getSession(true);
    		for (int i=1;i<7;i++){
    			String champPrelevement="idPrelevement"+i;
    			session.setAttribute(champPrelevement ,"idPrelevement"+i );
    		}				
     
    		// Insertion des informations dans la BD
    		try {
    			//on recherche l'id du nomEtablissement pour pvr générer le nEtude.
    			ConnexionPerso updatePrlvmt = new ConnexionPerso();
    			for (int p=1;p<7;p++){
    				if (request.getParameter("idPrelevement"+p)!=null){
     
    					String champPrelevement =(String) request.getParameter("idPrelevement"+p);
    					String champModalite = (String) request.getParameter("modalite"+p);
    					String champExutoire=(String) request.getParameter("exutoire"+p);
    					String champTemp=(String) request.getParameter("temp"+p);
    					String champTempMax =(String) request.getParameter( "tempMax"+p);
    					String champHeure = (String) request.getParameter("heure"+p);
     
     
    					String queryUpdate="UPDATE PrelevLEG SET Modalite='"+champModalite +
    					"'SET Exutoire='"+champExutoire +
    					"', Temp='"+champTemp +
    					"', TempMax='"+champTempMax +
    					"',Heure='"+champHeure+
    					"' WHERE idPrelevement='"+champPrelevement +
    					"'";
    					updatePrlvmt.ConnectAndQuestion(queryUpdate);
    				}
    				else {p++;}
    			}
     
     
    		}
    		catch(Exception ex) {
    			System.err.println("\n*** SQLException caught in main()");
    			getServletContext().getRequestDispatcher((String) params.get("urlFormulaire")).forward(
    					request, response);
    			return;
    		}
     
    		request.setAttribute("urlAction", (String) params.get("urlControleur"));
    		getServletContext().getRequestDispatcher((String) params.get("urlReponse")).forward(
    				request, response);
    		return;
    	}
     
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    	throws IOException, ServletException {
    		// on passe la main au GET
    		doGet(request, response);
    	}
    }
    Alors voilà, je retombe indéniablement sur la page formulaire lorsque je clique sur le bouton actualisation.
    Je ne comprend pas ce qui ne va pas : une idée svp ?
    Ma connexion à la base marche bien et j'ai testé ma requête avant de l'ajouter à mon script.
    Please !!

  4. #4
    Membre régulier Avatar de fripette
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    241
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 241
    Points : 71
    Points
    71
    Par défaut
    pas d'idées ? (un petit up d'après le week end)

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/06/2009, 20h59
  2. Problème de récupération de champs dans une DW
    Par SandraG dans le forum Powerbuilder
    Réponses: 3
    Dernier message: 27/11/2007, 12h08
  3. [SQL-Server] récupération de champs dans une base msql
    Par drexlbob dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 11/11/2007, 17h45
  4. Récupération de champ dans une liste
    Par nunurs83 dans le forum IHM
    Réponses: 4
    Dernier message: 11/05/2007, 14h02
  5. Récupération nom champ dans liste et faire pointer dessus
    Par Michel Hubert dans le forum Contribuez
    Réponses: 10
    Dernier message: 14/04/2006, 10h22

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