java - Spring 的 SimpleFormController 的不同 View

标签 java spring

我使用 Spring 的 SimpleFormController 进行表单处理。就我而言,编辑 View (JSP) 可能会根据正在编辑的内容而有所不同。 SimpleFormControllerformView 是一个字段(类变量),这意味着它由使用它的实例的所有线程共享。因此,在 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/

相关文章:

java - 在java上模拟URL输入

java - MultipartResolver 和 AbstractAnnotationConfigDispatcherServletInitializer

java - 是否可以在 @Pre/PostPersist 监听器中保留新实体?

java - 请求映射中的双星号

java - 多次打印字符

java - 解决 io.netty :netty-transport-native-epoll 时 Jenkins 中的 Maven 出错

java - 无法播放音频文件

java - JMeter自定义采样器同步

java - Spring Validation - 用于解决字段错误的类级别验证

java - 仅在使用基于 Spring java 的配置运行测试时初始化数据库