2

BeanオブジェクトをMVCから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に渡す正しい方法ですか、それとも同じことを実現する他のより良い方法がありますか?

4

1 に答える 1

0

多くのオプションはありません。適切な方法は、プロセス全体が同じフロー内で発生するようにアプリケーションを再設計することです。その後、最初にフロースコープに値を保存できます。唯一の代替手段は、リクエスト属性(すでに行っている)またはセッションスコープのBean /セッション属性のいずれかです。これらのリクエスト属性のうち、そうしないとセッションスコープが汚染され、セッションスコープの残りの値に起因する潜在的なバグが発生する可能性があるため、これらのリクエスト属性が優先されます。

于 2013-01-16T19:43:39.230 に答える