我有两个控制器,一个简单的表单控制器和一个多操作控制器。
现在,在simpleformcontroller中,我想将请求重定向到多操作控制器。
这是simpleformcontroller中的代码片段
protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) {
MyObject myOb = (MyObject )command;
system.out.println(myOb.toString);
ModelAndView mav = new ModelAndView(new RedirectView("another.htm"));
mav.addObject("Obj",myOb);
return mav;
}
another.htm绑定到多操作控制器中的方法。
<bean id="MyController" class="MyController">
<property name="methodNameResolver">
<bean class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
<property name="mappings">
<props>
<prop key="/another.htm">another</prop>
</props>
</property>
</bean>
</bean>
并且multiactioncontroller中的代码是
public class MyController extends MultiActionController {
public ModelAndView another(HttpServletRequest request,
HttpServletResponse response, MyObject myObj) {
system.out.println(myObj.toString());
}
}
输出是,Myobj的所有字段在mutiactioncontroller中都是空值,而在simpleformcontroller中传递时它们具有有效值。
我在这里遗漏了什么或者这不是传递命令对象的正确方法吗?
感谢任何帮助。
答案 0 :(得分:0)
除非将MyObject存储在会话中,否则您将始终为null。之所以发生这种情况,是因为用户数据无法继续重定向。要在会话中存储命令对象,请在SimpleFormController中使用setSessionForm,然后使用
检索命令public ModelAndView another(HttpServletRequest request, HttpServletResponse response, HttpSession session, MyObject myObj) throws CRPMException {
代替