Java 针对动态嵌套属性的Spring MVC表单提交绑定

Java 针对动态嵌套属性的Spring MVC表单提交绑定,java,spring,hibernate,spring-mvc,Java,Spring,Hibernate,Spring Mvc,我失去了主意,转而求助于社区专家。我正在使用Hibernate单表继承,这正驱使我朝着这个方向前进 我有一个BaseEntity类,其中有许多使用鉴别器的子类。我在CRUD操作中使用SpringMVC注释控制器,在视图中使用SpringForm标记的JSP 我有一个backingForm,其中包括表单使用的子类实体。为了保存大量重复的代码,我有一个common.jsp,其中包含BaseEntity中的字段,然后是其他特定于每个子类的jsp。通过查找pathVariable,然后加载适当的子类,并

我失去了主意,转而求助于社区专家。我正在使用Hibernate单表继承,这正驱使我朝着这个方向前进

我有一个BaseEntity类,其中有许多使用鉴别器的子类。我在CRUD操作中使用SpringMVC注释控制器,在视图中使用SpringForm标记的JSP

我有一个backingForm,其中包括表单使用的子类实体。为了保存大量重复的代码,我有一个common.jsp,其中包含BaseEntity中的字段,然后是其他特定于每个子类的jsp。通过查找pathVariable,然后加载适当的子类,并将其添加到表单中,我可以很好地显示数据。表单提交和Spring的数据绑定让我头晕目眩。有什么建议可以让Spring动态地发布到特定的嵌套属性。考虑一下,就像在表单提交中使用多态性一样。我知道这可能会让人困惑,但idf任何人都曾尝试过这一点,它应该有完美的意义:-)。这与动态列表绑定(自动填充)无关,这是非常不同的


感谢您的帮助。

在带注释的控制器中,您可以作为单独的方法执行以下操作:

@ModelAttribute("backingObject")
public SuperClass getBackingObject(HttpRequest request //etc) {
  //determine value of your path variable
  //create appropriate subcass
  return subClassInstanceForBinding;
}

因此,当spring开始绑定时,它将在模型映射中找到“backingObject”,并使用它,而不是寻找构造函数。

在带注释的控制器中,可以作为单独的方法执行:

@ModelAttribute("backingObject")
public SuperClass getBackingObject(HttpRequest request //etc) {
  //determine value of your path variable
  //create appropriate subcass
  return subClassInstanceForBinding;
}

因此,当spring开始绑定时,它将在模型映射中找到“backingObject”并使用它,而不是寻找构造函数。

谢谢。我会调查这件事。另外,我想我可能已经找到了另一种方法,在spring的表单标记中使用一个变量。我可以将表单的标记“path”与如下变量一起使用:。这允许动态绑定。到目前为止,我看到了一些早期的成功。谢谢。我会调查这件事。另外,我想我可能已经找到了另一种方法,在spring的表单标记中使用一个变量。我可以将表单的标记“path”与如下变量一起使用:。这允许动态绑定。到目前为止,我看到了一些早期的成功。