我有一個小小的懷疑。我使用Spring SimpleFormController和一個窗體支持對象。Spring SimpleFormController表單提交
比方說,我formBackobject具有以下成員: - 標識 - 名稱 - 性別
在JSP頁面中,我只綁定的名字和性別輸入字段。當我提交表單,後端控制器能記住的ID字段的值,因此可以區分這是否是一個「新」或「編輯」模式。
你能告訴我這背後的把戲?
謝謝,
我有一個小小的懷疑。我使用Spring SimpleFormController和一個窗體支持對象。Spring SimpleFormController表單提交
比方說,我formBackobject具有以下成員: - 標識 - 名稱 - 性別
在JSP頁面中,我只綁定的名字和性別輸入字段。當我提交表單,後端控制器能記住的ID字段的值,因此可以區分這是否是一個「新」或「編輯」模式。
你能告訴我這背後的把戲?
謝謝,
在我看來,你需要重載isEqual()和hashCode()函數。
在我的代碼我生成UUID並將其分配給字符串,然後實現的isEqual()和hashCode()我在那裏比較這些字符串
這種技術對於Hibernate也非常有用,它可以保證您始終生成獨特的對象。
背後的「訣竅」是表單保存在會話中。當您提交表格時,只會覆蓋'名字'和'性別'字段,並且ID保持原樣。
認爲id保存在會話中是合乎邏輯的。你是對的。我不提交id值,但spring可以自動將其值加載到id字段中。
所有這些都是在場景後自動完成的。這是自第一次以來造成我的困惑。
無論如何,所有這些都是你和我所做的假設。從文檔可能不是這樣。
請參閱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
你是什麼意思「可以記住ID字段的值,因此可以區分這是」新「還是」編輯「模式? – axtavt 2011-02-14 12:09:27