demande.getParameter n'ont pas de valeurs null lorsqu'ils sont attendues
J'ai trouvé cette question laisse perplexe (mais aussi intéressant) que j'aimerais demander à des gens ici pour avoir un aperçu.
J'ai enseigné moi-même JSP et les technologies associées. Ce que je suis tring à faire est de récupérer les paramètres à partir d'une JSP pour une servlet, puis utilisez-les avec Si( ).
Voici une partie de mon codage.
if ((request.getParameter("ID_A") != null || request.getParameter("Password_A") != null) &&
(request.getParameter("ID_B") != null || request.getParameter("Password_B") != null)) {
errorMessage = "Information is detected for the both side";
request.setAttribute("errorMessage", errorMessage);
request.getRequestDispatcher("4_enter_personal_info.jsp").forward(request, response);
} //Other conditions...
Voici une partie d'un JSP(L'étape précédente)
<form action="PersonalInfor_to_confirmation_servlet" method="POST">
<h2>For an existing customer</h2>
<p>Customer ID</p>
<input type="text" name="ID_A" value="" />
<p>Password</p>
<input type="text" name="Password_A" value="" />
<br>
<h2>For a new customer</h2>
<p>Set your customer ID</p>
<input type="text" name="ID_B" value="" />
<p>Set your password</p>
<input type="text" name="Password_B" value="" />
//There are other lines
</form>
Je suis tring pour s'assurer que, lorsqu'un client est entré des informations sur les deux côtés (For an existing customer/For a new customer
), vous verrez apparaître le message ci-dessus "Information is detected for the both side"
sur une JSP.
Cependant, même si toutes les zones de texte est vide, le message d'erreur s'affiche. Donc tous les request.getParameter( )
méthodes ci-dessus ne contiennent pas de valeurs null même si je fais le vide.
Même si je peux venir avec d'autres algorithmes, j'aimerais savoir la raison de ce phénomène se produit.
Tous les conseils seront appréciés.
- Connexes: stackoverflow.com/questions/7109419/...
Vous devez vous connecter pour publier un commentaire.
La raison pour laquelle les états dans le
if
bloc s'exécute, c'est que parce que le champ existe. Si vous ne voulez pas exécuter lorsque les zones de texte sont vides ce que vous devez faire est d'inclure dans votre condition de vérifier si le paramètre contient une chaîne vide, quelque chose comme:Oui. Lorsque
getParamater()
renvoie unenull
valeur, cela signifie qu'il ne peut pas trouver un champ dans le formulaire avec ce nom. Utiliser une autre méthode:isEmpty()
pour vérifier si un champ est vide ou pas. Tels que:null
et des Chaînes vides sont totalement différentes. Rappelez-vous simplement que chaque domaine dans votre formulaire lorsqu'il est soumis n'est pasnull
ils ont par défaut une valeur de chaîne vide""
. Alors, n'oubliez pas d'inclure égalementisEmpty()
dans votre validation.a String variable of value ""
sera considéré comme nul, mais il n'est PAS pour les JSP. Je vous remercie beaucoup.null
n'est pas la même chose aussi en Java. Je suis content d'avoir pu l'aider. Juste à lire et à essayer de codage. Vous l'aurez bien assez vite. Bonne chance! 🙂Lorsque vous soumettez le formulaire de cette façon, vous aurez
ID_A
la clé et""
(chaîne vide) en tant que valeur. La manière d'obtenir une valeur null est de ne pas envoyerID_A
à tous, avec toute la valeur.Un bon moyen de contourner ce problème serait de vérifier pour la chaîne vide explicitement: