Ich versuche, ein Formular an ein Servlet (Java) zu senden. Das Formular enthält eine Reihe von Fragen, jede Frage hat 4 Optionsfelder und der Benutzer wählt eine davon aus. Ich kenne nicht die Anzahl der Fragen, die in dem Formular enthalten sind. Es könnte 10, 15, 12 sein ... hängt von einigen anderen Kriterien ab. Meine Frage ist, wie Sie am besten die Liste der Auswahlmöglichkeiten abrufen, die der Benutzer für die Fragen im Formular getroffen hat.wie ein Formular zu senden, die dynamisch (unbekannte) Anzahl der Felder haben
Antwort
Eine typische Technik besteht darin, die Felder mit einem gemeinsamen Präfix zu benennen und sie dann zu durchlaufen: q000, q001, q002, usw., bis Sie einen nicht vorhandenen Wert erreichen.
Ein schneller Trick, der mir in den Sinn kommt ist es, alle Felder als
"question_"+n
zu benennen und einen Eingabetyp mit dem Wert von n versteckt haben. Wenn das Formular eine Möglichkeit bietet zu wissen, wie viele Fragen zu präsentieren sind, sollte es eine Möglichkeit geben, den Wert von n festzulegen.
Später abrufen Sie nur diesen Wert und ...
n = new Integer(request.getParameter("number_of_question"));
for(int i = 0 ; i < n ; i++) {
list.add(request.getParameter("question_"+i));
}
Dies ist das erste, was
Sie verwenden HttpServletRequest.getParameterNames() eine Aufzählung von Namen abzurufen alle Formularelemente innerhalb der Anfrage Sie können dann über die Enumeration iterieren und mit HttpServletRequest.getParameter (name) für jedes Element einen individuellen Wert anfordern.
Wenn Ihr HTML andere FORM-Elemente als Ihre Options-Optionsfelder enthält, verwenden Sie die geschickte Namenskonvention dieser Optionsschaltfläche, sodass Sie beim Aufzählen über die Parameternamen wissen, was Sie anfordern müssen.
Ein Beispiel.
Wenn Ihr Formular enthält zwei Fragen mit folgenden Optionen:
Question 1:
<input type="radio" name="question1" value="option1">
<input type="radio" name="question1" value="option2">
<input type="radio" name="question1" value="option3">
Question 2:
<input type="radio" name="question2" value="option1">
<input type="radio" name="question2" value="option2">
<input type="radio" name="question2" value="option3">
In Ihrem Servlet
Enumeration e = request.getParameterValues();
while(e.hasMoreElements()){
String name = (String)e.nextElement();
if(name.startsWith("question"){
String value = request.getParameter(name);
//your logic here
}
}
andere derselben zu tun ist:
In Ihrem Servlet
int maxQuestionNumber = Ganzzahl.parseInt (request.getParameter ("maxQuest ionNumber ")); // Dies sollte eine versteckte Variable in Ihrem HTML-Formular sein, die die maximalen Fragen in Ihrem Formular darstellt.
for(int i=1;i<=maxQuestionNumber;i++){
String value = request.getParameter("question"+i);
//your logic here..
}
Ich würde keine Workarounds vorschlagen. Die ServletRequest.getParameterMap() würde in diesem Szenario nützlich sein. Die Schlüssel der Map hätten den Typ String und die Werte hätten den Typ String [].
Daher können Sie sehr leicht Schleife durch die Karte foreach-Schleife so etwas wie dieses verwenden,
for(Map.Entry<K, V> entry : map.entrySet()){
..
if(entry.getValue().length > 1){
//means the choices not the question
}else{
//means the question not the choices
}
}
Ich hoffe, dass es helfen würde.
Sie könnten einfach JSON verwenden und so eine Zeichenfolge an das Servlet übergeben, das eine sehr lange Zeichenfolge verarbeiten kann, wenn Sie POST verwenden. Auf diese Weise können Sie alles passieren, was Sie wollen, auch wenn die Parameter komplex sind.
- 1. Karte unbekannte Anzahl von Spalten zu Wörterbuch
- 2. Java Layout für unbekannte Anzahl von Elementen
- 3. Jquery-Formular senden, um leere Felder zu überprüfen
- 4. Formular gesendet, wenn dynamisch Felder mit ng-repeat
- 5. Wie Button im Formular haben, die beim Senden auf erforderliche Felder prüft, aber die Seite nicht aktualisiert?
- 6. jQuery erstellen und senden Sie Formular dynamisch
- 7. Python: Entpacken auf unbekannte Anzahl von Variablen?
- 8. Anzahl der Gesamtzeilen, die Duplikate haben
- 9. Wie bekomme ich die Anzahl der Felder im JavaScript-Objekt?
- 10. Wie die unbekannte Anzahl der Zeile aus der Datei zu deklarieren
- 11. SQL Unbekannte Anzahl von Attributen
- 12. , die keine gemeinsamen Felder haben
- 13. CsvDataException: Anzahl der Felder ungültig
- 14. Ein Formular an Facebox senden
- 15. dynamisch Felder in einem formset
- 16. Einfügen unbekannte Anzahl von Werten
- 17. Daten an ein Django-Admin-Formular senden
- 18. Ein Formular ohne Seitenaktualisierung mit jQuery senden
- 19. Wie ändert man die Anzahl der Felder, die in einem Formular mit IIS 7.5 gebucht werden können?
- 20. Javascript Angular: wie unbekannte Anzahl von Versprechen zu verketten
- 21. $ _POST, um die dynamische Anzahl der zu aktualisierenden Felder zu erhalten
- 22. Formular wird nicht mit jquery Formular senden senden, wenn einige Felder deaktiviert sind
- 23. will_paginate Api, um die Anzahl der Artikel per_page zu senden
- 24. Wie Ajax-Formular verwenden, wenn das Formular dynamisch erstellt wird?
- 25. Felder beim Senden ignorieren
- 26. Pass unbekannte Anzahl von Parametern zu JS Funktion
- 27. Bind dynamisch hinzugefügt Formular zum Senden von Ereignis mit jQuery
- 28. Eine unbekannte Anzahl von Zeilen in eine MySQL-Datenbank einfügen
- 29. Ein Formular mit jQuery senden
- 30. Wie die Anzahl der Textfelder in einem Formular mit Javascript