2013-01-01 114 views
2

我需要將一個bean對象從MVC傳遞到webFlow。目前,我是這樣實現的:從MVC傳遞bean對象到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> 

的UserDetailsS​​ervice

public RegistrationDetails getRegistrationDetails(RequestContext requestContext){ 

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

我不想傳遞多個請求參數輸入到我的流程。這是將bean傳遞給SWF的正確方式,還是有其他更好的方法來實現它嗎?

回答

0

沒有太多選擇。正確的方法是重新設計您的應用程序,以便整個過程在同一個流程中進行,然後您可以將流量值中的值存儲到一開始。唯一的選擇是要麼屬性(你已經在做),要麼是會話範圍的bean/session屬性。除了這些請求屬性之外,否則您最終會污染您的會話範圍,並引入潛在的錯誤,這些錯誤源自會話範圍中的剩餘值。

+0

謝謝。我沒有選擇重新設計我的應用程序,以便整個過程在同一個流程中進行。我認爲剩下的唯一選擇就是處理它,就像使用request屬性一樣處理它。 – Shinky

相關問題