我使用 Spring 的 SimpleFormController
进行表单处理。就我而言,编辑 View (JSP) 可能会根据正在编辑的内容而有所不同。 SimpleFormController
的 formView
是一个字段(类变量),这意味着它由使用它的实例的所有线程共享。因此,在 formBackingObject
中设置 formView(通过 setFormView
)是不安全(也不合适)的。我的问题是,是否可以根据某些上下文将 SimpleFormController
与不同的编辑 View 一起使用?
后续:查看源代码后,我似乎可以覆盖 showForm(HttpServletRequest req, HttpServletResponse resp, BindExceptionErrors)
并调用 showForm(HttpServletRequest req、BindException 错误、String viewName)
以及我想要的任何 View 。
最佳答案
我相信 SimpleFormController 提供了两个“showForm” protected 方法。这些可以被覆盖,并且 BindException 用于检索“目标”(即您的表单对象),然后您可以基于任何绑定(bind)的表单对象属性返回 ModelAndView。您还应该看看 processFormSubmission,它规定了真正调用哪些方法。另一种方法是“isFormChangeRequest”,它确定您的表单是否应该更改 - 您可以使用它将其设置为 true,然后它将使用请求、响应等调用 showForm,然后您可以重新检查请求。
您学习如何使用此层次结构的唯一方法是通过检查它。它不是很好——它提供了很多东西,但不是很好。 Spring MVC 通常必须进行扩展才能使其非常有用。
关于java - Spring 的 SimpleFormController 的不同 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/762104/