2013-01-01 2 views
2

MVC에서 webFlow로 bean 객체를 전달해야한다. 현재, 나는이 방법으로 이것을 달성하고있다 :Bean 객체를 MVC에서 Spring WebFlow로 전달

  1. 내 bean 객체를 컨트롤러의 요청 속성으로 저장하고있다.
  2. 전달할 전달.
  3. flowRequestContext에서 객체를 액세스하여 내 플로우를 시작하고 flowScope에 설정합니다.

    @RequestMapping(value = "/ProcessUser", method=RequestMethod.POST) 
    public String processForm(LoginUser loginUser, HttpServletRequest request){ 
    .... 
    request.setAttribute("registrationDetails", registrationDetails); 
    
    return "forward:/chineseFlow"; //Call to flow 
    } 
    

chineseFlow.xml

<on-start>   
    <evaluate expression="userDetailsService.getRegistrationDetails(flowRequestContext)" result="flowScope.registrationDetails"/> 
    </on-start> 

UserDetailsService의 내 흐름에 입력으로 여러 요청 매개 변수를 전달하지 않으려는

public RegistrationDetails getRegistrationDetails(RequestContext requestContext){ 

    HttpServletRequest httpRequest = (HttpServletRequest) requestContext.getExternalContext().getNativeRequest(); 
    RegistrationDetails registrationDetails = (RegistrationDetails)httpRequest.getAttribute("registrationDetails"); 
    return registrationDetails; 
} 

. 이것은 콩을 SWF에 전달하는 올바른 방법인가요? 아니면 같은 것을 달성하는 다른 더 좋은 방법이 있습니까?

답변

0

많은 옵션이 없습니다. 적절한 방법은 전체 프로세스가 동일한 플로우 내에서 발생하도록 어플리케이션을 재 설계하는 것입니다. 그러면 플로우 스코프에 값을 저장하여 시작할 수 있습니다. 유일한 대안은 요청 속성 (이미하고있는)이거나 세션 범위 bean/session 속성 일 것입니다. 이러한 요청 속성 중에서 세션 범위를 오염 시키게되고 세션 범위의 남은 값으로 인해 발생하는 잠재적 인 버그가 발생하게됩니다.

+0

감사합니다. 전체 프로세스가 동일한 흐름 내에서 발생하도록 내 애플리케이션을 재 설계 할 수있는 옵션이 없습니다. 내가 가진 유일한 옵션은 요청 속성을 사용하여 바로 처리하는 것과 같은 방식으로 처리하는 것입니다. – Shinky

관련 문제