2010-09-10 4 views
1

J'ai un tableau de lignes et de colonnes sur un formulaire d'entrée HTML qui permet à l'utilisateur de modifier plusieurs enregistrements. Chaque ligne correspond à un enregistrement de base de données et chaque colonne à un champ de base de données.Paramètres connexes en HTML

Lorsque l'utilisateur soumet le formulaire, le serveur doit déterminer quel paramètre de requête appartient à quelle ligne. La méthode que j'utilise depuis des années est de préfixer ou de suffixer le nom de chaque élément d'entrée HTML pour indiquer la ligne à laquelle il appartient. Par exemple, tous les éléments d'entrée auront le suffixe "row1" afin que le serveur sache que les paramètres de requête dont les noms se terminent par "row1" sont des valeurs de champ pour la première ligne. Bien que cela fonctionne, un avertissement de l'approche suffixe/préfixe est que vous ajoutez une contrainte que vous ne pouvez pas nommer d'autres éléments avec un suffixe/préfixe particulier. Je me demande donc s'il existe une meilleure approche, plus élégante. J'utilise JSP pour la couche de présentation, au fait.

Merci.

Répondre

0

Les agents utilisateurs actuels renvoient les valeurs dans l'ordre des champs tel que présenté à l'utilisateur. Cela signifie que vous pouvez (théoriquement) supprimer complètement le préfixe/suffixe et le trier en fonction de l'ordre des valeurs. Vous obtiendrez quelque chose comme

/?name=Tom&gender=M&name=Jane&gender=F&name=Roger&gender=M 

Je ne sais pas comment votre cadre revient, mais beaucoup reviennent comme des listes de chaque valeur

name = [Tom, Jane, Roger] 
gender = [M, F, M] 

Si vous pop un élément hors de chaque liste, vous devriez obtenir un ensemble connexe avec lequel vous pouvez travailler. L'inconvénient de ceci est qu'il repose sur un comportement standard qui n'est pas réellement requis par la spécification. Pourtant ... c'est une solution pratique avec un comportement qui ne sera pas problématique dans la pratique.

0

Lorsque les navigateurs POST que les informations sur le serveur, il est juste une liste de paramètres:

?name_row1=Jeff&browser_row1=Chrome&name_row2=Mark&browser_row2=IE8 

Alors, vraiment, je pense que vous pouvez répondre à une question simple: comment se rapporte-vous clés dans un Key- liste de valeur? Alternativement, vous pouvez passer à une méthode de livraison plus structurée (JSON ou XML), qui vous donnera automatiquement un format de données structuré. Bien sûr, cela signifie que vous devrez d'abord construire cette valeur sur le navigateur, puis l'envoyer via AJAX (ou via la valeur d'un champ de saisie masqué), puis décompresser/désérialiser dans le code du serveur.

XML:

<rows> 
<row><id>1</id><name>Jeff</name><browser>Chrome</browser></row> 
<row>...</row> 
</rows> 

ou JSON:

[{ "name":"Jeff", "browser":"Chrome"}, { "name":"Mark", "browser":"IE8" }] 

Il y a beaucoup de ressources/tutoriels sur la façon de le faire ... Google il. Ou allez avec le consensus ostensible StackOverflow et essayez jQuery.

1

Je ne connais pas très bien le JSP, mais en PHP vous définiriez les noms de vos champs d'entrée avec une syntaxe tableau.

<input name='person[]'> 
<input name='person[]'> 
<input name='person[]'> 

Lorsque PHP reçoit une forme comme ça, il vous donne un tableau (dans la gamme standard $ _POST), ainsi:

$_POST['person']=array('alice','bob','charlie'); 

ce qui le rend très facile à traiter ayant autant de jeux des champs que vous voulez.

Vous pouvez également nommer explicitement les éléments du tableau:

<input name='person[teamleader]'> 
<input name='person[developer1]'> 

vous donnerait un tableau avec les clés. Si vos préfixes actuels ont un sens au-delà de la simple numérotation des enregistrements, cela résoudra ce problème.

Je ne sais pas si la syntaxe identique fonctionnerait pour JSP, mais j'imagine que cela permettrait quelque chose de très similaire.

espoir qui aide.

Questions connexes