リクエストパラメタの自動バインドはデフォルトの動作と思われますが、多くのドキュメントが見つかりません。私のマッピングと今Spring 3 @RequestMappingはリクエストパラメータを自動バインドするはずですか?
<form:form modelAttribute="test" action="testsubmit.do" method="POST">
Name: <form:input path="name" />
Nested Name: <form:input path="test.nestedName"/>
<input type="submit"/>
public class Test {
public String name;
public String name2;
public TestNested test;
...
public class TestNested {
public String nestedName;
...
:ここに私の例である
@RequestMapping(value = "/testsubmit")
public String testSubmit(Test test){
...
test
オブジェクトはネストされた値を含むフォーム値をバインドしています。これは私には予想される動作のようですが、マップされたメソッドのパラメータとして指定されたオブジェクトに関して、そのアノテーションとその使用法で少し混乱しています。
15.3.2.8 Providing a link to data from the model with @ModelAttribute
は言う:
あなたがメソッドのパラメータにそれを配置すると、
@ModelAttribute
は、特定の、アノテーション付きメソッドのパラメータにモデル属性をマップ(以下processSubmit()
メソッドを参照してください)。これは、コントローラがフォームに入力されたデータを保持するオブジェクトへの参照を取得する方法です。
ロード時にオブジェクトtest
をフォームにバインドすると、値はname2
に設定されます。
@RequestMapping(value = "/test")
public String test(Model model) {
Test test = new Test();
test.setName2("test name2");
model.addAttribute("test", test);
return "test";
}
私は@ModelAttribute("test")
とtest
パラメータに注釈を付けるとき、これがsubmit
方法に通過されません。
@RequestMapping(value = "/testsubmit")
public String testSubmit(@ModelAttribute("test") Test test) {
...
name2
は、フォームフィールド/要求として指定されていなかったので、これは私に期待されていますparamですが、@ModelAttribute("test")
使用のポイントを理解するのには役立ちません。誰も私のためにこれについていくつかの光を当てることができますか?