2010-11-23 17 views
0

こんにちは私はアノテーション付きのSpring MVC 3を使用しています。spring:1つのPOST内に複数のパラメータがあります

どのように私は1つで複数のModelAttributesを使用しない<form:form>タグ

これはすべて1つのModelAttributeを使用するのに完全に機能しますが、それらをネストして2つを使用すると機能しません。これを行う方法はありますか?または、私はどのようにしてModelAttributeを送付しますか?同じリクエストのをリクエストしますか?

+0

ネストされたオブジェクトでは正確には機能しません。 – axtavt

+0

@axtavt:よく私はそれらを入れ子にする方法がわかりません。私が実際に使用している2つのフォームを入れ子にした "スーパー"フォームを作成すると、modelattributesはnullと表示されます。他のいくつかのケースでは、ボタンはまったく何もしません。それらを入れ子にする方法の例を教えてください。 – toomuchcs

答えて

3

あなたは簡単にこのように、ホルダーオブジェクトを使用して1つのモデルの属性に複数のオブジェクトを組み合わせることができます。

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(春タグは@RequestParamをサポートしていないことに注意してください)だけでなく@ModelAttributeと組み合わせることができます。

<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) { ... } 
関連する問題