1

我没有想法并求助于社区专家。我正在使用 Hibernate 单表继承,这促使我朝这个方向发展。

我有一个 BaseEntity 类,其中包含许多使用鉴别器的子类。我使用 Spring MVC 注释控制器进行 CRUD 操作和 JSP 使用 Spring 表单标签作为视图。

我有一个 backingForm,其中包括表单使用的子类实体。为了节省大量重复代码,我有一个 common.jsp,其中包含 BaseEntity 中的字段,然后是每个子类的其他 JSP。这些其他 JSP 包括 common.jsp。我可以通过查看 pathVariable 然后加载正确的子类,将其添加到表单中来很好地显示数据。表单提交和 Spring 的 DataBinding 让我着迷。任何人都可以提出一种允许 Spring 动态发布到特定嵌套属性的好方法。把它想象成在表单提交上使用多态性。我知道这可能看起来令人困惑,但 idf 任何人都曾尝试过它,这应该很有意义:-)。这与动态列表绑定(AutoPopulating)无关,这是非常不同的。

感谢您的任何见解。

4

1 回答 1

1

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

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

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

于 2012-04-19T17:50:58.530 回答