如果未绑定到spring表单,则在模型中将字段设置为null

时间:2014-11-17 18:12:40

标签: spring forms spring-mvc

在Spring形式中,如果不是模型的所有字段都绑定到表单字段。在提交时,结果模型在未与表单字段绑定的模型字段中变为null。当我收到请求时,我希望在控制器中,所有未绑定形式的模型字段保持其值。 我知道实现这一目标的一种方法是放置隐藏字段并将这些属性绑定到它们。 有哪些其他可能的方法可以解决这个问题以及最好的解决方案。谢谢!

2 个答案:

答案 0 :(得分:1)

您需要在某处保持原始对象状态:

  1. 会话(使用@SessionAttributes) - 这是一般解决方案
  2. 在回写之前从数据库中获取它(在方法上使用@ModelAttribute)
  3. 将其存储在客户端(隐藏形式的变种)
  4. 您也不想用空值覆盖值:

    1. 使用@InitBinder方法在DataBinder上设置allowedFields或disallowedFields
    2. 为此表单创建一个表单备份对象,其中包含您需要的字段,并将这些值复制到实体(考虑Dozer

答案 1 :(得分:0)

您应该在@SessionAttributes("anEntity")注释中添加“types”元素,以便保留属性的属性; e.g。

@SessionAttributes(types = AnEntity.class, names = "anEntity")