2009-06-19 19 views
2

Does JSP oder eine mit ihr verbundene leichte Technologie wie JSTL führen HTTP POST „Datengruppierung“ oder Unterstützung Formelement „Indizierung“ in der Art und Weise PHP tut?Wie mehrere „Datensätze“ aus einem HTML-Formular zu JSP oder einem Java-Servlet-POST?

Zum Beispiel können Sie ein HTML-Formular mit den folgenden Eingaben erstellen:

<input type="text" name="person[1][name]" /> 
<input type="text" name="person[1][age]" /> 
<input type="text" name="person[2][name]" /> 
<input type="text" name="person[2][age]" /> 

... und PHP automatisch, dass in ein verschachteltes assoziatives Array analysieren. Hat JSP, Java Servlets oder ein verbundener spec oder Werkzeug bietet diese Art der Übersetzung aus der Box?

Das Ziel ist es, mehr „record Gruppen“ in einer einzigen Form einzureichen, und sie serverseitige in JSP oder ein Servlet verarbeiten.


Anforderungen:

  • Die Funktionalität nicht auf JavaScript verlassen können
  • keine vollständige Frameworks wie Spring, Struts oder dergleichen
  • ich das Rad neu erfinden zu vermeiden, bin versucht, meine eigene Namenskonvention und manuelles String-Parsing/Regex

Related Links:

Antwort

5

Try this,

<input type="text" name="personNames" /> 
<input type="text" name="personAges" /> 
<input type="text" name="personNames" /> 
<input type="text" name="personAges" /> 

Sie berücksichtigen sollten, Eingabefelder mit einer Schleife erstellen, die Sie nicht brauchen postfix die name sogar. und erhalten Parameterwerte wie diese in Ihrem Servlet,

String[] names = request.getParameterValues("personNames"); 
String[] ages = request.getParameterValues("personAges"); 

Es wird in der gleichen Reihenfolge wie in Ihrem HTML festgelegt kommen. Dann Schleife über es wie unten,

for(String name : names) { 
    System.out.println(name); 
} 
+1

Guter Gedanke, aber ich habe das früher versucht. Wenn eine der Eingaben ein Kontrollkästchen ist, werden die Sätze nicht mehr synchronisiert. Nicht angekreuzte Kästchen werden nicht eingereicht und werfen die Zählung ab. Wenn Sie z. B. 10 Datensätze mit Kontrollkästchen haben und die letzten 5 auswählen, werden die ersten 5 – drfloob

+0

angezeigt. In diesem Fall wird der Wert des Kontrollkästchens Ihnen sagen, welches Paket gesendet wird. Wie auch immer, diejenigen, die du nicht bekommst, haben keine Werte. Wieso sich die Mühe machen. Sie können all diese Null annehmen, warum nicht? –

+1

@Vinegar: es bedeutet, dass Checkboxen anders gehandhabt werden müssen. Der Vorschlag, den Sie oben haben, funktioniert nicht, da Sie ein Array von Ja-Kästchen erhalten. Sie müssten eingeben und dann die Zahlen vorlesen. – Stobor