2010-08-16 19 views
1

저는 간단한 폼 컨트롤러와 멀티 액션 컨트롤러라는 두 개의 컨트롤러를 가지고 있습니다.Spring : 커맨드 객체가 채워지지 않습니다.

이제 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이 multiaction 컨트롤러의 메소드에 결합 SimpleFormController 같은 코드 조각입니다.

<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로 모든 필드 SimpleFormController 같은 전달 때 유효한 값을 갖는 반면에 mutiactioncontroller 널이다.

여기에 뭔가가 누락되었거나 명령 객체를 전달하는 올바른 방법이 아닙니까?

도움을 주시면 감사하겠습니다.

+0

가 왜'SimpleFormController'와'MultiActionController'를 사용하는

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

를 사용하여 명령을 검색하려면? 그것들은 쓸데 없으며 사용할 통증이고, 오랫동안 주석이 달린 컨트롤러로 대체되었습니다. – skaffman

+1

이것은 레거시 코드이며이를 사용해야합니다. 그 뒤의 역사는 다음과 같습니다 – JWhiz

+0

올바른 방향으로 안내 할 수있는 [여기에 예제가 있습니다] (http://www.earldouglas.com/node/16). 그것은 사용하려고하는 구식 컨트롤러를 효과적으로 대체 한 주석이 달린 컨트롤러를 사용합니다. – earldouglas

답변

0

세션에 MyObject를 저장하지 않으면 항상 null이됩니다. 사용자 데이터 리디렉션을 통과하지 못하기 때문에 발생합니다. 세션에서 명령 개체를 저장하는 SimpleFormController 같은에서 setSessionForm를 사용하고 그 다음 대신

+0

답변 해 주셔서 감사합니다. 도움이되었습니다. – JWhiz

관련 문제