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 :

[Débutant] Passage d'input/hidden vers ma Servlet (multipart/form-data)


Sujet :

Servlets/JSP Java

  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2005
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Points : 210
    Points
    210
    Par défaut [Débutant] Passage d'input/hidden vers ma Servlet (multipart/form-data)
    Bonjour,

    aujourd'hui un nouveau problème se pose pour moi. Un collègue m'a donné le moyen d'uploader un fichier. Pour cela j'utilise dans ma form :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    enctype="multipart/form-data"
    Le problème avec ce type est que je n'arrive plus à récupérer dans ma servlet les éléments qui sont en hidden dans ma JSP tels que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    		<td><input type="hidden" value="<%=mode %>" name="txtMode"></td>
    		<td><input type="hidden" value="<%=path %>" name="txtPath"></td>
    Cela me renvoie la valeur null quand je fais dans ma servlet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    			String path = request.getParameter("txtPath");
    			String mode= request.getParameter("txtMode");
    Je sais que cela vient d'un problème de sérialisation si j'ai bien compris ce que j'ai trouvé sur le net mais je ne trouve pas comment résoudre mon problème. Pour mes autres input de type "text", je récupère bien les valeurs.

    Je vous mets ci-dessous ma page JSP et ma servlet.

    Merci beaucoup.

    Ma page JSP :

    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
    <%@ page language="Java" import="servlet.*" %>
    <%
    // on récupère les données nom, age et urlRetour nécessaire à l'affichage de la page
    String mode =(String)request.getParameter("txtMode");
    String id=(String)request.getParameter("txtId");
    String iduser=(String)request.getParameter("txtIdUser");
    String user=(String)request.getParameter("txtUser");
    String libelle=(String)request.getParameter("txtLibelle");
    String fichier=(String)request.getParameter("txtFichier");
    String datecreation = request.getParameter("txtDateCreation");
    String path = request.getParameter("txtPath");
     
    user = ServletAbonne.searchUserFromID(Integer.parseInt(iduser));
    path = (String)application.getRealPath("/");
     
    %>
    <html>
    <head>
    <title>Intranet Rennes Ausy</title>
    <LINK REL="StyleSheet" HREF="./../CSS/styles.css" TYPE="text/css">
    </head>
    <body>
    <%              
                    String repass = request.getParameter("alreadypassed");
    %>
    <%
                    if (repass != null) {
                            out.print ("<p align=\"center\">Veuillez remplir le champ Libellé et Sélectionnez un fichier !</p>"); 
                    }
    %>
     
    <center>
    <h2>Fiche du document administratif</h2>
    <hr>
    <form action="<%=request.getContextPath()+"/ServletDocAdmin"%>" method="post" name="frm" enctype="multipart/form-data">
    <table>
    <tr>
    	<tr>
    		<td>Date de création</td>
    		<td><input name="txtDateCreation" value="<%=datecreation%>" type="text" size="20" readonly></td>
    	</tr>
    	<tr>
    	<td>User</td>
    		<td><input name="txtUser" value="<%=user%>" type="text" size="20" readonly></td>
    	</tr>	
    	<tr>
    		<td>Libelle*</td>
    		<td><input name="txtLibelle" value="<%=libelle%>" type="text" size="20"></td>
    	</tr>
    	<tr>
    		<td>Fichier*</td>		
    		<td><input name="txtFichier" value="" type="file" size="40"></td>
    	</tr>	
    	<tr></tr>
    	<tr>
    		<td>* Champs obligatoires</td>		
    	</tr>
    </table>
    <table>
    	<tr>	
    		<td><input type="hidden" value="<%=mode %>" name="txtMode"></td>
    		<td><input type="hidden" value="<%=path %>" name="txtPath"></td>
    		<td><input type="hidden" value="<%=id %>" name="txtId"></td>
    		<td><input type="hidden" value="<%=iduser %>" name="txtIdUser"></td>			
    		<td><input type="hidden" value="0" name="alreadypassed"></td>
    		<td><input type="submit" value="Sauvegarder le document administratif"></td>
    		<td><input type="submit" value="Supprimer le document administratif" onclick="document.frm.txtMode.value='3'"></td>
    	</tr>
    </table>
    </form>
    </center>
    </body>
    </html>

    La fonction doPost de 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
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
    			boolean isMultipart = FileUpload.isMultipartContent(request);
    			int retour = 3;
    			File fullFile = null;
    			File savedFile = null;
    			FileItem item = null;
    			DocAdmin docAdmin = null;
    			String libelle = "";
    			Integer iduser = -1;
    			Integer id = -1;
    			String descriptif_filename = "";
    			//String mode = "";
    			String path = request.getParameter("txtPath");
    			String mode= request.getParameter("txtMode");
    			System.out.println("-------> Mode :"+mode+"\n-------> Path :"+path);
    			if(!isMultipart){
    			System.out.println("pas multipart !!!");
    			//	request.getRequestDispatcher("msg.jsp").forward(request, response);
    			//	return;
    			}
    			else
    			{
    				try
    				{
    					DiskFileUpload upload = new DiskFileUpload();
    					upload.setSizeMax(10000000);// 10 Mo
    					List items = upload.parseRequest(request);
    					Iterator itr = items.iterator();
    					while(itr.hasNext())
    					{
    						//Object o_item = itr.next();
    						item = (FileItem) itr.next();
    						if(item.isFormField()) 
    						{
    							String fieldName = item.getFieldName();
    							System.out.println("--------------> Voici le champ : "+fieldName);
    							if(fieldName.equals("txtLibelle"))
    							{
    								libelle = item.getString();
    								if (!libelle.equals(""))
    								{
    									System.out.println("Libellé = "+libelle);
    								}
    							}
    							else if(fieldName.equals("txtDateCreation"))
    								System.out.println("date = "+item.getString());
    							else if (fieldName.equals("txtIdUser"))
    							{
    								iduser = Integer.parseInt(item.getString());
    								if (iduser != -1)
    								{	
    									System.out.println("Id User ="+ iduser);
    								}
    							} else if (fieldName.equals("txtMode")) {
    								mode = item.getString();
    								if (!mode.equals(""))
    								{
    									System.out.println("Mode = "+mode);
    								}
    							} else if (fieldName.equals("txtId")) {
    								id = Integer.parseInt(item.getString());
    								if (id != -1)
    								{
    									System.out.println("Id du document = "+id);
    								}
    							} 
    						} 
    						else 
    						{							
    							if (item != null)
    								if (item.getName() != null && !item.getName().equals(""))
    								{
    									//descriptif_filename = item.getName();
    									System.out.println("nom du fichier : "+item.getName());
    									fullFile = new File(item.getName());
    									System.out.println(path+"download/");
    									savedFile = new File(path+"download/", fullFile.getName());
    									descriptif_filename = savedFile.getAbsolutePath();
    									item.write(savedFile);
    								}
    						}
    					}					
     
    					if (mode.equals("3")) {
    //						Suppression du document
    						Transaction tx = session.beginTransaction();
    						DocAdmin DocAdmin = (DocAdmin) session.load(DocAdmin.class, new Integer(id));
    						v.removeElement(DocAdmin);				
    						session.delete(DocAdmin);
    						session.flush();				
    						tx.commit();//								
    						System.out.println("Le document administratif est supprimé !");
    						getServletContext().getRequestDispatcher("/JSP/DocAdmin.jsp").forward(request,response);			
    					} else {
    //					 	vérification des données obligatoires			
    						if (!libelle.equals("") && !(descriptif_filename.equals("")))
    						{
    							Transaction tx = session.beginTransaction();														
     
    							if (mode.equals("2")) {
    							// 	On modifie l'DocAdmin
    								docAdmin = (DocAdmin) session.load(DocAdmin.class, new Integer(id));
    								int index = v.indexOf(docAdmin);
    								docAdmin.setAbonneIdent(iduser);
    								docAdmin.setDocumentAdminLibelle(libelle);
    								docAdmin.setDocumentAdminFichier(descriptif_filename);												
    								v.setElementAt(docAdmin,index);
    								session.save(docAdmin);											
    							} else if (mode.equals("1")) {
    							// 	On ajoute le nouvel DocAdmin
    								docAdmin = new DocAdmin();
    								docAdmin.setAbonneIdent(iduser);
    								docAdmin.setDocumentAdminLibelle(libelle);
    								docAdmin.setDocumentAdminFichier(descriptif_filename);														
    								Date d = new Date();
    								docAdmin.setDocumentAdminDatecreation(d);						
    								v.addElement(docAdmin);
    								session.save(docAdmin);
    							} else {
    							// 	ERROR
    							}
    							session.flush();	
    							tx.commit();												
    							System.out.println("result commit : " + tx.wasCommitted());
    							System.out.println("Le document administratif est bien enregistré");
    							getServletContext().getRequestDispatcher("/JSP/DocAdmin.jsp").forward(request,response);
    						}						
    					}
    				}
    				catch(Exception e)
    				{
    					e.printStackTrace();
    				}
    			}
    		}

  2. #2
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2005
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Points : 210
    Points
    210
    Par défaut
    j'ai découvert qu'en mettant mes input de type hidden dans la première table, j'arrive bien à les récupérer (pas par le request.getParameter()) comme mes autres objet de type text.

    Quelqu'un aurait-il une explication à celà ?

  3. #3
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    35
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 35
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par tck-lt Voir le message
    j'ai découvert qu'en mettant mes input de type hidden dans la première table, j'arrive bien à les récupérer (pas par le request.getParameter()) comme mes autres objet de type text.

    Quelqu'un aurait-il une explication à celà ?
    c'est bien de mettre ta solution pour les autres qui ont le même problème que toi!!!!!!!!!!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 28/10/2011, 19h19
  2. Réponses: 1
    Dernier message: 25/06/2007, 21h10
  3. Passage de parametre d'un document Flash vers un servlet ?
    Par haifa28 dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 09/04/2007, 06h32
  4. [Servlet] pb multipart/form-data retourne valeur null
    Par Doumeasse38 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 12/05/2006, 08h46
  5. [débutant]Passage GUI de Swing vers SWT
    Par Méta dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 04/05/2006, 13h29

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