2011-02-14 51 views
0

我有一個小小的懷疑。我使用Spring SimpleFormController和一個窗體支持對象。Spring SimpleFormController表單提交

比方說,我formBackobject具有以下成員: - 標識 - 名稱 - 性別

在JSP頁面中,我只綁定的名字和性別輸入字段。當我提交表單,後端控制器能記住的ID字段的值,因此可以區分這是否是一個「新」或「編輯」模式。

你能告訴我這背後的把戲?

謝謝,

+0

你是什麼意思「可以記住ID字段的值,因此可以區分這是」新「還是」編輯「模式? – axtavt 2011-02-14 12:09:27

回答

0

在我看來,你需要重載isEqual()和hashCode()函數。

在我的代碼我生成UUID並將其分配給字符串,然後實現的isEqual()和hashCode()我在那裏比較這些字符串

這種技術對於Hibernate也非常有用,它可以保證您始終生成獨特的對象。

0

背後的「訣竅」是表單保存在會話中。當您提交表格時,只會覆蓋'名字'和'性別'字段,並且ID保持原樣。

0

認爲id保存在會話中是合乎邏輯的。你是對的。我不提交id值,但spring可以自動將其值加載到id字段中。

所有這些都是在場景後自動完成的。這是自第一次以來造成我的困惑。

無論如何,所有這些都是你和我所做的假設。從文檔可能不是這樣。

+0

請參閱http://static.springsource.org/spring/ docs/2.5.x/api/org/springframework/web/servlet/mvc/AbstractFormController.html。第9點。「如果未設置sessionForm,則調用formBackingObject()以檢索表單對象。否則,控制器將嘗試查找會話中已綁定的命令對象。如果找不到對象,它會調用handleInvalidSubmit,默認情況下它會嘗試創建一個新的表單對象並重新提交表單。「 – Ritesh 2011-02-18 17:04:03