httpservlet demande getparameter de manière incontrôlée, et coché les cases à cocher en java
mon formulaire a plusieurs cases (environ 15) et la question de la gi est que les noms des cases à cocher apparaissent seulement dans l'énumération si elles sont vérifiées, mais je souhaite à tous de leur retour, de sorte que lorsque j'imprime les données qu'il aura le nom de la case et de dire "vérifié" ou "désactivé". j'avais pensé à une manière que je pourrais juste de régler manuellement le drapeau pour voir ce qui est présent et ce qui ne l'est pas, mais qui n'a pas l'air à distance efficace.
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
try
{
FileWriter writer = new FileWriter("OrderFormData.csv");
writer.append("FieldName");
writer.append(',');
writer.append("Value");
writer.append('\n');
@SuppressWarnings("unchecked")
Enumeration <String> paramNames = request.getParameterNames();
while(paramNames.hasMoreElements())
{
String paramName = (String)paramNames.nextElement();
writer.append(paramName);
writer.append(',');
String[] paramValues = request.getParameterValues(paramName);
if (paramValues.length == 1)
{
String paramValue = paramValues[0];
if (paramValue.length() == 0)
{
writer.append("No Value");
writer.append('\n');
}
else
{
writer.append(paramValue);
writer.append('\n');
}
}
else
{
for(int i = 0; i<paramValues.length; i++)
{
writer.append(paramValues[i]);
writer.append(',');
}
writer.append('\n');
}
}
writer.flush();
writer.close();
}
catch(IOException e)
{
e.printStackTrace();
}
}
}
OriginalL'auteur StraightEdge | 2012-07-30
Vous devez vous connecter pour publier un commentaire.
Vous devriez penser à une solution de contournement parce que @Alex vous a dit, décoché les cases à cocher sont pas partie de la demande.
C'est juste une idée, mais par exemple:
Ensuite, vous pouvez obtenir
checkboxNamesList
de la demande (ce sera une Chaîne de caractères[]) de sorte que vous aurez toutes les cases params noms. Si vous obtenez un paramètre pour l'une des cases nom et la valeur est nulle, cela signifie que checkboxe n'a pas été vérifiée.Édité: clarification
Bien, comme décoché les cases ne sont pas présents dans la requête que vous ne connaissez pas, dont les cases à cocher dans la page JSP n'ont pas été vérifiées, mais vous avez besoin de savoir pour écrire dans votre fichier de données de quelque chose comme checkbox_name1=désactivée.
Alors, comment faire? Tout d'abord, vous devez savoir ce que les cases (cocher ou pas) étaient présents dans la requête. Pour cela, vous pouvez utiliser le code ci-dessous et obtenir le nom de toutes les cases présentes dans la page JSP:
Ensuite, laisser regarder sans restriction checboxes:
Qu'entendez-vous par "fichier de données"? Les champs cachés sont juste une partie de la demande. Le but ici est de trouver les noms de ces cases qui n'ont pas été vérifiées de sorte que vous pouvez faire avec eux ce que vous voulez.
im exportation de données à partir du formulaire dans un fichier csv, et il est mis en forme par: nom du champ valeur ne le sera pas de retour du champ caché? parce que si je comprends bien, il sera de retour le réel case quand il est vrai et il est également de retour cachés textfield quand il est false, ce qui n'est pas souhaité
OK. Quel est donc le problème? Si vous avez une liste de cases à cocher (activée et désactivée), de regarder pour eux dans la demande, si les param est là, la case est cochée, sinon, non.
je suis désolé, je ne suis pas d'essayer d'être impoli ou quoi que ce soit. je viens honnêtement ne vois pas comment cela fonctionne pour la résolution de mon problème. im ne doutant pas qu'il ne le travail, im juste essayer de comprendre comment, afin que je puisse la mettre en œuvre, sincèrement, je veux juste comprendre. Comme la façon dont cela fonctionne...l'habitude de cette méthode de retour: le nom du champ valeur du champ chkbox1 vrai chkbox1txt faux chkbox2 faux chkbox2txt faux où chkbox1txt et chkbox2txt sont cachés les zones de texte. si c'est le cas je veux éliminer d'avoir le vrai et le faux, pour la même "elememnt" (la case à cocher et champ caché)
OriginalL'auteur jddsantaella
Vous pouvez utiliser les champs cachés avec des cases à cocher. Itérer à travers eux et de vérifier la présence de la case de sélection.
Et sur le côté serveur faire quelque chose comme ceci:
Prendre soin. Si vous utilisez le même nom ("fruit") pour toutes les cases, vous allez travailler avec un groupe de cases où l'on peut être vérifiée.
C'est vrai. J'ai probablement utilisé quelque chose comme ça sur un formulaire avec beaucoup de dynamique des cases à cocher et des composants radiobutton. Ces derniers doivent être dans un groupe et le même code fonctionne pour les deux.
OriginalL'auteur tuner
les cases non cochées ne sera pas une partie de la demande: voir http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13.2
OriginalL'auteur Alex Snaps
Créer des champs cachés comme
<input type="checkbox" name="checkbox" checked/>
<input type="hidden" name="checkbox" checked />
Maintenant dans votre servlet:
String[] noms = request.getParameterValues("case");
OriginalL'auteur Victor