Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring'的不同视图;s SimpleFormController_Java_Spring - Fatal编程技术网

Java Spring'的不同视图;s SimpleFormController

Java Spring'的不同视图;s SimpleFormController,java,spring,Java,Spring,我正在使用Spring的SimpleFormController进行表单处理。在我的例子中,编辑视图(JSP)可以根据正在编辑的内容而变化SimpleFormController的formView是一个字段(类变量),这意味着它由使用它的实例的所有线程共享。因此,在formBackingObject中设置formView(通过setFormView)是不安全的(也不合适的)。我的问题是,是否可以基于某些上下文将SimpleFormController与不同的编辑视图一起使用 跟进:查看源代码后,

我正在使用Spring的
SimpleFormController
进行表单处理。在我的例子中,编辑视图(JSP)可以根据正在编辑的内容而变化
SimpleFormController
formView
是一个字段(类变量),这意味着它由使用它的实例的所有线程共享。因此,在
formBackingObject
中设置formView(通过
setFormView
)是不安全的(也不合适的)。我的问题是,是否可以基于某些上下文将
SimpleFormController
与不同的编辑视图一起使用


跟进:查看源代码后,我似乎可以覆盖
showForm(HttpServletRequest-req、httpservletresp、BindException-errors)
并调用
showForm(HttpServletRequest-req、BindException-errors、String-viewName)
以我想要的任何视图。

我认为使用SimpleFormController是不可行的


您可以尝试停止使用无论如何都会被弃用的控制器层次结构类,看看Spring2.5引入的基于注释的控制器。它们允许更灵活的表单处理。如果你不喜欢自动注射,就不要拖延。尽管没有一个示例真正说明这一点,但您可以使用注释驱动的控制器并在XML内容中定义所有bean。

我相信SimpleFormController提供了两种“showForm”保护方法。这些可以被重写,BindException用于检索表单对象“target”,然后您可以基于任何绑定的表单对象属性返回ModelAndView。您还应该看看processFormSubmission,它指示真正调用哪些方法。另一种方法是“isFormChangeRequest”,它确定表单是否应该更改-您可以使用它将其设置为true,然后它将调用showForm,并提供请求、响应等,然后您可以重新检查请求


学习如何使用此层次结构的唯一方法是检查它。它不是很好——它提供了很多东西,但不是很好。为了使Spring MVC非常有用,通常必须对其进行扩展。

该死,我在打字,你回答自己的问题更快了:)祝你好运。它很容易使用,一旦你追溯到顶部-但我希望它更好。不过,我在注释方法方面运气不好——这让我很困惑,我宁愿用控制器接口编程我自己的控制器。我应该指出,到目前为止,我有更多的时间学习和使用Spring中的注释控制器,它们非常棒。转换服务需要更多的工作来处理泛型类型(例如,包含特定有界类型的列表实例)。我很想了解更多关于Spring MVC中打包的控制器“做得不好”的信息。就我个人而言,我发现它们作为起点非常有用,它们作为起点非常好,但它们提供了太多受保护的方法,您必须追溯到调用它们的来源。此外,如果您想以不同的方式使用他们的控制器,则很难找到副作用。例如,我有一个表单控制器,我必须存储表单对象,以便它可以重定向到另一个控制器,该控制器使用会话中的对象来显示数据-但对我来说,表单控制器删除了该对象…现在,对于某些方法,它确实在Javadoc上这样说,但是有这么多受保护的方法,很难找到真正需要使用的方法。层次结构太复杂了——一个名称中带有“Simple”的类扩展了六个类(忽略对象扩展),并且可能有大约50个方法,这是一个奇迹,是糟糕设计的一个关键指标。扩展太多,使用不够。