[JSP]Pb passage de paramètres formulaire
Bonjour,
Mes péripéties continuent...
Mon but : afficher le contenu d'un fichier chargé par l'utilisateur dans la textarea de msg.jsp.
Pour le chargement, j'utilise le package FileUpload.
Voilà ma page importer.jsp :
Code:
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
|
<%@ page import="java.io.*" %>
<script language="JavaScript">
function choixURL(){
var objForm = document.getElementById('formChargement');
var boutOnClick=document.getElementById('cache').value;
if(boutOnClick=="Annuler")
objForm.action = "index.jsp";
return false;
}
</script>
<html>
<head>
<title>Page de chargement du fichier</title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
</head>
<body>
<form name="formChargement" action="uploadFormulaire.jsp" method="post" enctype="multipart/form-data" OnSubmit="choixURL()" id="formChargement">
Choisissez votre fichier dans l'arborescence : <input type="file" name="monFichier"><br/><br/>
<input type="submit" value="Charger le fichier"/>
<input type="submit" value="Annuler" onclick="document.getElementById('cache').value=this.value;"/>
<input type='hidden' id='cache'/>
</form>
<%
String fichier = request.getParameter("monFichier");
pageContext.getSession().setAttribute("fichier", fichier);
%>
</body>
</html> |
et la page appelée pour traiter les informations du formulaire : uploadFormulaire.jsp
Code:
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
|
<%@ page import="org.apache.commons.fileupload.*, java.util.List, java.io.File, java.util.Iterator" %>
<%
String monFic = (String)request.getParameter("monFichier");
String vide="";
boolean isMultipart = FileUpload.isMultipartContent(request);
if(!isMultipart){
request.setAttribute("msg", "Request was not multipart!");
request.getRequestDispatcher("msg.jsp").forward(request, response);
return;
}
DiskFileUpload upload = new DiskFileUpload();
List items = upload.parseRequest(request);
Iterator itr = items.iterator();
while(itr.hasNext()){
FileItem item = (FileItem) itr.next();
if(item.isFormField()) {
String fieldName = item.getFieldName();
if(fieldName.equals("name"))
request.setAttribute("msg", "Thank You: " + item.getString());
} else {
File fullFile = new File(item.getName());
File savedFile = new File(getServletContext().getRealPath("/")+"/tmp/", fullFile.getName());
item.write(savedFile);
}
}
request.getRequestDispatcher("msg.jsp").forward(request, response);
%> |
et la page msg.jsp :
Code:
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
|
<%@ page import="java.io.*" %>
<%
String msg = (String)request.getAttribute("msg");
if(msg != null) {
out.println("<font size=+1>" + msg + "</font><br/>");
}
%>
<textarea readonly cols="50" rows="20">
test de la page
<%
String monFichier = (String)getServletContext().getSession().getAttribute("fichier");
try{
BufferedReader in = new BufferedReader (new FileReader (monFichier));
String str;
while ((str=in.readLine()) != null){
out.println(str);
}
in.close();
} catch (IOException e){
out.println("Erreur d'ouverture du fichier");
}
%>
</textarea>
Cliquez <a href="importer.jsp">ici</a> pour retourner à la page de chargement de fichier. |
En lisant le forum, j'ai essayé de passer le nom du fichier dans un paramètre de session mais visiblement, cela ne fonctionne pas non plus...
Bien sûr, à l'éxecution, j'ai une JasperException de la part de Tomcat.
Si vous voyez où ça cloche.
A +
Arnapou