我有一个小小的怀疑。我使用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