我有一个类层次结构,其中一个类Book
是更具体项目的基类,比如ChildrensBook
.
我需要在 JSP 表单中显示这些项目,以便可以编辑它们的字段。Book
并且ChildrensBook
有很多共同点,以至于我使用单个控制器和单个 JSP 表单似乎是合理的。实际上ChildrensBook
只是一个Book
带有一个额外字段的 a,例如ageGroup
. JSP 仅在编辑ChildrensBook
我已经开始编写代码,但是在将完成的表单回发到 MVC 控制器时遇到了问题。这是处理表单的方法:
@RequestMapping( value="*", method = RequestMethod.POST )
public String onSubmit( @Valid @ModelAttribute("entity") BookCommand command, BindingResult result, RedirectAttributes redirectAttributes, ModelMap model )
{ /* code not shown */ }
如您所见,我将表单绑定到 aBookCommand
但我需要儿童书籍的表单绑定到ChildrensBookCommand
对象。
在这种情况下有什么好的解决方案?专门为其创建另一个表单/控制器ChildrensBook
会导致大量不受欢迎的重复代码。ChildrensBookCommand
使用 a而不是创建另一个处理程序方法BookCommand
失败,大概是因为 MVC 无法判断使用哪个。将儿童图书表单发布到不同的 URL 似乎很尴尬,因为我使用的是 Spring<form:form ...>
标记,它会自动设置表单操作 URL。
感谢您的任何建议。