2010-11-09 8 views
4

Je veux juste envoyer la valeur de ma dropdownlist avec un paramètre request. Dans mon cas, étantPasser un paramètre de demande dans Spring MVC 3

Kidscalcula_web/start.htm?klasid=myValueHere 

Je sais une façon de faire cela, mais il semble si irrationnel de l'utiliser pour cela. Si je m'ennuyais j'écrirais probablement un certain jQuery pour faire un poteau et pour envoyer le paramètre par exemple. Maintenant cela semble vraiment une très mauvaise idée de faire manuellement ma chaîne de demandes, puisque le ressort prend soin de cela. Alors, comment pourrais-je faire un formulaire simple qui envoie juste ma dropdownvalue à mon contrôleur?

Il est juste que je ne peux pas trouver quelque chose d'aussi trivial partout, et l'un, vous pouvez sans doute me aider quickly.I supposons que le contrôleur serait tout aussi trivial que:

@RequestMapping(value = "post") 
    public String postIndex(@RequestParam("klasid") String klasid, HttpServletResponse response, 
      HttpServletRequest request) { 
} 

Mais je peux vraiment Ne trouvez pas d'exemples sur la façon de faire un JSP pour m'envoyer cette valeur. Est-ce possible avec le taglib <form>?

Répondre

11

Le taglib <form> est généralement utilisé avec des objets de commande de sauvegarde de formulaire, plutôt que d'être lié aux contrôleurs à l'aide d'arguments individuels @RequestParam. C'est pourquoi vous ne verrez aucun exemple de documentation de cette combinaison utilisée ensemble.

Par exemple, plutôt que d'avoir @RequestParam("klasid"), vous auriez une classe de commande avec un champ appelé klasid, et le printemps lierait le tout ensemble:

@RequestMapping(value = "post") 
public String postIndex(@ModelAttribute MyCommandClass command) { /../ } 

Cela est logique si l'on considère que les formes en général avoir plusieurs paramètres, et il serait fastidieux de tous les déclarer en utilisant @RequestParam. Cela dit, vous pouvez toujours le faire - tous les contrôles de formulaire génèreront des paramètres de requête auxquels @RequestParam peut se lier, mais si vous choisissez de dévier du modèle de commande de sauvegarde de formulaire de Spring MVC, c'est plutôt gênant.

+0

Avant notre application démarre, nous devons demander à notre utilisateur de faire un choix qui se tient dans un cookie; mais ça sonne comme une surcharge totale pour mettre une valeur dans une classe de commande. C'est pourquoi je me demandais si rien d'autre ne pouvait être utilisé. – toomuchcs

+0

Les paramètres doivent-ils être passés dans "{/../}" ?? –

3

Vous n'avez même pas besoin d'un taglib pour envoyer cette demande. Vous pouvez créer un formulaire plus simple HTML avec method = "GET" (quelle est la valeur par défaut de method):

<form action = "..."> 
    <select name = "klasid"> 
     <option value = "value1">Option 1</option> 
     <option value = "value2">Option 2</option> 
     <option value = "value3">Option 3</option> 
    </select> 
    <input type = "submit" /> 
</form>