【问题标题】:Spring SimpleFormController form submissionSpring SimpleFormController 表单提交
【发布时间】:2013-01-03 23:00:50
【问题描述】:

我有点怀疑。我使用带有表单支持对象的 Spring SimpleFormController。

假设我的 formBackobject 有以下成员: - ID - 姓名 - 性

在jsp页面上,我只绑定了姓名和性别到输入框。当我提交表单时,后端控制器可以记住 id 字段的值,因此可以区分这是“新”模式还是“编辑”模式。

你能告诉我这背后的诀窍吗?

谢谢,

【问题讨论】:

  • “可以记住 id 字段的值,从而可以区分这是“新建”还是“编辑”模式是什么意思?

标签: spring


【解决方案1】:

在我看来,您需要重写 isEqual() 和 hashCode() 函数。

在我的代码中,我生成 uuid 并将其分配给 String,然后在比较这些字符串的地方实现 isEqual() 和 hashCode()。

这种技术对 Hibernate 也非常有用,它可以确保您始终生成唯一的对象。

【讨论】:

    【解决方案2】:

    背后的“诀窍”是表单保持在会话中。当您提交表单时,只有 'name' 和 'sex' 字段会被覆盖,而 Id 会保持原样。

    【讨论】:

      【解决方案3】:

      认为 id 保存在 session 中是合乎逻辑的。你是对的。我不提交 id 值,但 spring 可以将其值自动加载到 id 字段中。

      所有这些都是在幕后自动完成的。这就是从一开始就让我感到困惑的原因。

      无论如何,这一切都是你我的假设。从文档来看可能不是真的。

      【讨论】:

      • 请参阅static.springsource.org/spring/docs/2.5.x/api/org/…。第9点。“如果没有设置sessionForm,则调用formBackingObject()来检索表单对象。否则,控制器会尝试查找已绑定在会话中的命令对象。如果找不到对象,则调用处理InvalidSubmit - 默认情况下 - 尝试创建一个新的表单对象并重新提交表单。”
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-24
      • 2016-06-29
      • 2016-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多