我正在使用Spring的SimpleFormController
进行表单处理。在我的例子中,编辑视图(JSP)可以根据正在编辑的内容而有所不同。 SimpleFormController
的{{1}}是一个字段(类变量),这意味着它由使用它的实例的所有线程共享。因此,在formView
中设置formView(通过setFormView
)是不安全的(也不合适)。我的问题是,是否可以根据某些上下文使用formBackingObject
不同的编辑视图?
跟进:查看来源后,我可以覆盖SimpleFormController
,并以我想要的任何视图调用showForm(HttpServletRequest req, HttpServletResponse resp, BindException errors)
。
答案 0 :(得分:3)
我相信SimpleFormController提供了两个“showForm”保护方法。这些可以被覆盖,并且BindException用于检索作为表单对象的“目标”,然后可以基于任何绑定的表单对象属性返回ModelAndView。您还应该查看processFormSubmission,它指示实际调用哪些方法。另一种方法是“isFormChangeRequest”,它确定您的表单是否应该更改 - 您可以使用此方法将其设置为true,然后它将使用请求,响应等调用showForm,然后您可以重新检查该请求。 / p>
您将学习如何使用此层次结构的唯一方法是检查它。它不是很好 - 它提供了许多东西,但不是很好。 Spring MVC通常必须进行扩展才能使它非常有用。
答案 1 :(得分:0)
我不认为SimpleFormController是可行的。
您可以尝试停止使用即将弃用的控制器层次结构类,并查看Spring 2.5中引入的基于注释的控制器。它们允许更灵活的表单处理。如果您不喜欢自动注射,请不要推迟。虽然没有一个示例真正显而易见,但您可以使用注释驱动的控制器并在XML内容中定义所有bean。