2011-02-14 82 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