Spring MVC表单提交绑定动态嵌套属性

时间:2012-04-19 17:33:04

标签: java spring hibernate spring-mvc

我没有想法,转向社区专家。我正在使用Hibernate单表继承,这正在推动我朝这个方向发展。

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

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

感谢您的任何见解。

1 个答案:

答案 0 :(得分:1)

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

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

那么当spring进行绑定时,它会在你放在那里并使用它的模型图中找到“backingObject”,而不是寻找构造函数。