2010-11-23 42 views
0

Salut J'utilise Spring MVC 3 avec des annotations.printemps: plusieurs paramètres en un seul POST

Comment puis-je utiliser plusieurs ModelAttributes dans un Spring<form:form>tag?

Tout fonctionne parfaitement pour utiliser un ModelAttribute, mais les imbriquer et en utiliser deux ne fonctionne pas. Y a-t-il un moyen de faire cela? Ou comment pourrais-je envoyer un ModelAttributeet unRequestParameter dans la même requête POST ?

+0

Qu'est-ce qui ne fonctionne pas exactement avec les objets imbriqués? – axtavt

+0

@axtavt: Eh bien, je ne sais pas comment les imbriquer. Si je fais une forme "super" qui imbrique les deux formes que j'utilise actuellement, elle dit que les attributs du modèle sont nuls. Dans d'autres cas, le bouton ne fait rien du tout. Pourriez-vous donner un exemple sur la façon de les imbriquer? – toomuchcs

Répondre

3

Vous pouvez facilement combiner plusieurs objets dans un attribut de modèle à l'aide d'un objet de support, comme ceci:

public class Foo { 
    private String name; 
    ... 
} 

public class Bar { 
    private String name; 
    ... 
} 

public class FooBarForm { 
    private Foo foo; 
    private Bar bar; 
    ... 
} 

.

<form:form modelAttriubte = "fooBarForm" method = "post"> 
    <form:input path = "foo.name" /> 
    <form:input path = "bar.name" /> 
</form:form> 

.

@RequestMapping(...) 
public String processForm(@ModelAttribute FooBarForm form, ...) { ... } 

@RequestParam peuvent être combinés avec @ModelAttribute et (notez que les balises de printemps ne prennent pas en charge @RequestParam):

<form:form modelAttriubte = "foo" method = "post"> 
    <form:input path = "name" /> 
    <input type = "text" name = "bar_name" /> 
</form:form> 

.

@RequestMapping(...) 
public String processForm(@ModelAttribute Foo foo, 
    @RequestParam("bar_name") String barName) { ... }