2010-11-07 26 views
0

在彈簧3,如果我有一個表格對象像這樣:在Springs Velocity綁定宏(或JSP taglibrary)中對「command」的引用是什麼?

public Person { 
    String firstname = null; 
    String lastname = null; 
    // ... getter & setters ... 
} 

我現在明白,我可以收到此對象作爲參數在我的控制器方法和Spring將形式參數綁定到吸氣劑/我的Person對象的setter。

現在我想使用彈簧綁定宏(相當於JSP taglib的綁定到表單對象)。

我讀的所有文檔都說有一個默認的「命令」對象(這意味着我還不明白)。好像我應該可以通過調用引用Person對象如:

#springBind("command.firstname") 

但我不明白的地方「命令」來自或者是什麼意思,我不明白我需要在我的控制器中做這個「綁定」。

  • 我是否需要在模型中添加某些內容?
  • 我是否需要爲Spring定義Person對象是表單對象?
  • 我應該在渲染頁面之前將<「command」,new Person()>添加到模型中,還是在錯誤提交表單後重新渲染頁面?
  • 什麼進入控制器使「命令」對宏有意義?

我很困惑,錯過了一些真的非常簡單的概念,我想。

回答

1

是的,您需要在Model中添加命令對象。而且你需要在渲染空表單時將其放在那裏,所以model.addAttribute("command", new Person())是正確的方法。在驗證錯誤時,您可能希望使用提交的Person對象,以便用戶不會丟失所有提交數據。

+0

謝謝!如果我按照您的指定將一個對象添加到名爲「command」的模型中,我可以從velocity模板成功調用$ command.firstname,但是#springBind(「command.firstname」)只輸出〜5個空格。 #springBind的目的是什麼?我期望它輸出字段的名稱或字段的值。春季文檔在這裏的細節比較短。 – 2010-11-07 12:44:38

+0

我沒有太多使用Spring的Velocity,但我假設'#springBind()'設置'$ {status}'變量,你需要使用它來綁定字段到你的對象並獲取錯誤。 – hleinone 2010-11-07 23:35:58