2012-04-19 57 views
1

我不知道并转向社区专家。我正在使用Hibernate单表继承,这正在推动我朝这个方向发展。Spring MVC表单提交绑定动态嵌套属性

我有一个BaseEntity类与许多使用Discriminator的子类。我正在使用Spring MVC注释控制器进行CRUD操作,并使用Spring窗体标记来查看JSP。

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

感谢您的任何见解。

回答

1

在注释的控制器,你可以做一个单独的方法:

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

当春天去约束它会在你放在那里,并用它的模型图发现“backingObject”,而不是那么接下来寻找一个构造函数。

+0

谢谢。我会考虑这样做。另外,我想我可能已经通过在Spring的窗体标签中使用变量找到了另一种方法。我可以像这样使用窗体的标签“path”:。这允许动态绑定。我目前看到一些早期的成功。 – user943583 2012-04-19 19:44:33