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();
				}
			}
		}