Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.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 将命令对象从SimpleFormController传递到控制器_Java_Spring Mvc - Fatal编程技术网

Java 将命令对象从SimpleFormController传递到控制器

Java 将命令对象从SimpleFormController传递到控制器,java,spring-mvc,Java,Spring Mvc,我需要在SpringMVC中将命令对象从SimpleFormController传递到控制器(实现控制器接口的控制器)。Spring的版本是2.5,配置是基于XML的 正在从SimpleFormController重定向到控制器。但是,对${command.myVal}的调用返回null,即使我在控制器指向的jsp中添加了session=“true” SimpleFormController中的重定向代码为: return new ModelAndView("redirect:/SimpleCo

我需要在SpringMVC中将命令对象从SimpleFormController传递到控制器(实现控制器接口的控制器)。Spring的版本是2.5,配置是基于XML的

正在从SimpleFormController重定向到控制器。但是,对${command.myVal}的调用返回null,即使我在控制器指向的jsp中添加了session=“true”

SimpleFormController中的重定向代码为:

return new ModelAndView("redirect:/SimpleController.do");
对于SimpleFormController,sessionForm属性在spring.xml中设置为true

<property name="sessionForm"><value>true</value></property>
在SimpleControl中,我必须创建一个字符串到Obj的映射,并将其传递给视图。在这里,我再次从会话中获取commandObj

HttpSession session = request.getSession(true);
resultMap.put("command", session.getAttribute("command"));

请建议是否有更好的方法不使用注释。这似乎是获得结果的一种冗长的方式。

为了让Spring解析命令对象,您需要将表单直接提交给扩展BaseCommandController的控制器

如果SimpleFormController本身收到表单提交,则可以将命令存储在会话中,供控制器使用

(当然,如果将基于注释的方法应用到SpringMVC中,这一切都会变得更容易)


希望这有帮助

请向我们展示重定向代码。命令对象是否存储在会话中?如果不是,它的状态将无法通过重定向。SessionForm对于SimpleFormController是真的谢谢amir,我找到了一种使用session的方法,但是如果知道这不是Spring的方法,那就太好了。它和SimpleFormController一样不受欢迎!这两种方法在v3.0中都被弃用,取而代之的是带注释的控制器(即,在普通Java类上使用特殊注释,而不是实现/扩展Spring的控制器接口+类继承权)。查找它们,它们更适合用于这种类型的东西,并且从2.5版开始提供。你甚至可以说SimpleFormController本身不再是“春天之路”,它不想引起火焰。我在BaseCommandController上发布的原因是,当我在代码中使用它时,我看到了不推荐的内容,但是SimpleFormController缺少这种内容。在使用注释时,这是一个使用XML方式的项目,最好保持这种方式,除非有一些功能在没有注释的情况下绝对无法实现。不用担心-您是否尝试使用setSessionForm(true)配置SimpleFormController?这可能会节省您显式存储在会话中的时间。只是一个想法。。。
HttpSession session = request.getSession(true);
resultMap.put("command", session.getAttribute("command"));