2010-02-05 2 views
4

Dans ASP.NET MVC dans le contrôleur, je peux simplement avoir un objet de mon modèle comme paramètre dans l'une de mes méthodes, et une soumission de formulaire traitée par cette méthode remplit automatiquement l'objet.Java - Spring MVC - Remplir automatiquement l'objet à partir de la soumission du formulaire?

par exemple:

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Edit(User u){...} 

L'objet utilisateur sera automatiquement renseigné pour être de la soumission du formulaire.

Existe-t-il un moyen de faire cela automatiquement avec Spring MVC, et si oui, comment le faire?

Répondre

3

Dans Spring MVC (avec une configuration basée sur les annotations Spring MVC 2.5+), il ressemble exactement de la même façon:

@RequestMapping(method = RequestMethod.POST) 
public ModelAndView edit(User u) { ... } 

L'objet User sera automatiquement . Vous pouvez également spécifier explicitement le nom de l'attribut modèle correspondant avec @ModelAttribute annotation (par défaut nom d'attribut est le nom de la classe un argument avec la première lettre décapitalisé, à savoir « utilisateur »)

... (@ModelAttrbiute("u") User u) ... 
+0

Je regardais à travers le projet d'exemple de soins pour animaux de compagnie pour Spring 3.0. Dans leur exemple, ils ont un objet séparé appelé 'UserForm' comme paramètre de la méthode. Savez-vous pourquoi ils le séparent comme ça? – Kyle

+0

@Spines: Cela peut être utile lorsque la structure de votre objet de formulaire est différente de vos objets de modèle de données – axtavt

0

Dans Servlets non, mais au printemps MVC absolument. Jetez un oeil à la docs web framework.

Spécifiquement Section 13.11.4, 9ème puce.

+0

Comment dois-je faire dans Spring MVC? J'ai simplement utilisé des trucs comme '@RequestParam (" name ") String name, @RequestParam (" age ") String age', puis en remplissant manuellement l'objet' User'. – Kyle

1

http://static.springsource.org/spring/docs/2.0.x/api/org/springframework/web/portlet/mvc/SimpleFormController.html#onSubmitAction(java.lang.Object)

Créer un contrôleur de forme, par exemple PriceIncreaseFormController et en font étendre SimpleFormController

remplacer la méthode public ModelAndView onSubmit(Object command) il existe de nombreuses variantes de ce qui précède. Cherchez la bonne méthode qui convient à votre besoin. Pour un écoulement simple, la méthode ci-dessus devrait suffire. A l'intérieur de la méthode, vous pouvez typer la commande et obtenir votre classe de commande.

commandObj = ((PriceIncrease) command) 

commandObj aura les paramètres remplis par le printemps. Dans votre springapp-servlet.xml, vous devriez indiquer à spring sur la classe de commande PriceIncrease comme suit et vous devriez aussi avoir un POJO pour votre classe de commande créée.

<bean name="/priceincrease.htm" class="springapp.web.PriceIncreaseFormController"> 
    <property name="commandClass" value="springapp.service.PriceIncrease"/> 

....

Questions connexes