demande.getParameter sur un bouton de soumission en donnant la valeur null
Sur cliquez sur Générer du PDF/Générer Excel bouton "soumettre" il est de demander la servlet FileUpload pour le traitement.Maintenant, quand j'essaie de récupérer la valeur du bouton envoyer, que j'ai pressé,c'est de me donner la valeur que null.Je me demande pourquoi est-ce qui se passe?
Voici mon code HTML:
<form action="FileUpload" method="post" enctype="multipart/form-data">
<input type="file" id="filename" name="filename"><br>
<input type="button" value="Upload"><br>
<input type="submit" value= "Generate PDF" name="pdf">
<input type = "submit" value="Generate Excel" name="xls">
</form>
C'est ma servlet code:
String generatePDF= request.getParameter("pdf");//null
if(generatePDF.equals("Generate PDF"))//Giving NullPointerException at this step
{
System.out.println("generatePDF button pressed");
}
OriginalL'auteur Arpit | 2013-04-13
Vous devez vous connecter pour publier un commentaire.
Aussi loin que je puisse voir le problème semble être avec le fait que vous avez un multipart requête envoyée au serveur. La deuxième réponse dans ce question semble avoir la solution à votre problème. Essentiellement, vous devez utiliser les méthodes fournies par FileItem classe dans le Apache Commons FileUpload paquet. Ou, comme l'a suggéré ici, vous pourriez avoir à utiliser la
getPart()
méthode de la classe HttpServletRequest.enctype="multipart/form-data"
question.+1 moi aussi. J'ai raté
enctype
partie initialement...merci @tomor...son travail maintenant, pour moi..:)
OriginalL'auteur tomor
Mise à JOUR
Désolé, j'ai raté le
enctype="multipart/form-data"
partie. Donc, en tant qu'utilisateur @tomor correctement noté, la raison derrière le problème est que vous utilisezenctype="multipart/form-data"
. Lire son réponse.Pour l'explication plus détaillée de votre problème de lire la réponse suivante par BalusC: Comment télécharger des fichiers vers le serveur à l'aide de JSP/Servlet?.
La solution suivante est pour la Servlet v3.0. Pour les versions plus anciennes, les plus populaires solution est d'utiliser Apache Commons FileUpload (voir les détails dans le BalusC réponse).
Si vous voulez vérifier ce que soumettre bouton a été pressé, l'une des solutions pourrait être de nommage de l'soumettre les boutons de la même et puis de vérifier les valeurs.
Exemple:
HTML
Servlet
NB! Attention à la @MultipartConfig annotation (disponible depuis Servlet 3.0). De cette façon, vous pouvez traiter correctement multipart/form-data demandes.
TestServlet.java
REMARQUE:
Au lieu de
@WebServlet
(nouveau depuis Servlet 3.0), vous pouvez, bien sûr, faire de servlet configurations à l'intérieur de web.xml. De même pour le@MultipartConfig
: au lieu de cette annotation vous pouvez ajouter la<multipart-config>
comme un élément enfant de la servlet de configuration de l'élément dans le web.xml fichier.Exemple (extrait de web.xml):
Plus de liens utiles:
Servlet
La technologie
3.0
OriginalL'auteur informatik01
Vous devez modifier votre code pour tester la valeur null en premier. Cela permettra d'éviter les erreurs par la suite. Essayez de l'inspection de la demande qui est soumise à voir ce qu'il contient. Firefox a un plugin appelé falsifier les données qui vous permet d'intercepter et de modifier une demande avant de l'envoyer. Je suis sûr qu'il y aura d'autres si vous recherchez.
Cela vous permettra de voir les données avant de les envoyer. Rappelez-vous qu'au moment où il frappe à votre serveur, il est été par plusieurs étapes afin de le voir début de l'aide. Également envisager d'avoir un filtre pour le journal de la demande de l'état, les noms de paramètres, etc. Il peut vous aider lors du premier développement et peut être facilement retiré plus tard, sans empiéter sur votre code de commerce.
OriginalL'auteur Romski
Si votre formulaire type MIME multipart/formdata il doit être configuré de @MultipartConfig annotation dans le Servlet ou dans web.xml comme décrit ici
OriginalL'auteur laksys
Modifiant le code de la servlet
à
String generatePDF= request.getParameter("filename");
parce que: nom de l'attribut de type d'entrée sera le getParameter Valeur
OriginalL'auteur Pavan