2009-06-19 9 views
2

Est-ce que JSP ou tout lié léger technologie comme JSTL HTTP POST effectuer « groupe de données », ou un élément de forme de soutien « d'indexation » de la manière PHP fait?Comment faire pour envoyer plusieurs "ensembles d'enregistrements" d'un formulaire HTML à JSP ou une servlet Java?

Par exemple, vous pouvez créer un formulaire HTML avec les entrées suivantes:

<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]" /> 

... et PHP analysera que dans un tableau associatif imbriqué automatiquement. Est-ce que JSP, Java Servlets, ou toute spécification ou outil connexe fournit ce type de traduction hors de la boîte?

L'objectif est de présenter plusieurs « groupes de disques » sous une forme unique, et les processus côté serveur JSP ou une Servlet.


Exigences:

  • La fonctionnalité ne peut pas compter sur JavaScript
  • Pas de cadres complets tels que Spring, Struts, ou comme
  • J'essaie d'éviter de réinventer la roue ma propre convention de nommage et l'analyse des chaînes manuel/Regex

Liens connexes:

Répondre

5

Essayez ceci,

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

Vous devriez envisager de créer des champs d'entrée en utilisant une boucle, vous n'avez pas besoin pour postfixer le name même. et obtenir des valeurs de paramètres comme celle-ci dans votre servlet,

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

Il apparaîtra dans le même ordre que celui défini dans votre code HTML. Puis boucle dessus comme ci-dessous,

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

Bonne pensée, mais j'ai essayé cela plus tôt. Lorsque l'une des entrées est une case à cocher, les ensembles sont désynchronisés. les boîtes non cochées ne sont pas envoyées, ce qui annule le compte. par exemple, si vous avez 10 enregistrements avec des cases à cocher et sélectionner les 5 derniers, ils viennent à travers comme ayant choisi le premier 5 – drfloob

+0

Dans ce cas, la valeur de la case à cocher vous dire que l'on se soumis. Quoi qu'il en soit, ceux que vous n'obtenez pas, ils n'ont aucune valeur. Alors, pourquoi s'embêter. Vous pouvez supposer tous ces null, pourquoi pas? –

+1

@Vinegar: cela signifie que les cases à cocher doivent être traitées différemment. Avec les cases à cocher, la suggestion que vous avez ci-dessus ne fonctionnera pas, car vous obtiendrez un tableau de cases à cocher Oui. vous auriez à faire , puis lire les numéros à la place. – Stobor

Questions connexes