Spring:命令对象未填充

时间:2010-08-16 09:33:27

标签: spring spring-mvc

我有两个控制器,一个简单的表单控制器和一个多操作控制器。

现在,在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中传递时它们具有有效值。

我在这里遗漏了什么或者这不是传递命令对象的正确方法吗?

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

除非将MyObject存储在会话中,否则您将始终为null。之所以发生这种情况,是因为用户数据无法继续重定向。要在会话中存储命令对象,请在SimpleFormController中使用setSessionForm,然后使用

检索命令
public ModelAndView another(HttpServletRequest request, HttpServletResponse response, HttpSession session, MyObject myObj) throws CRPMException  {

代替