Spring Webflow 2 以降、ModelAndView
オブジェクトは生成されなくなりました ( SpringSource フォーラムのこの投稿(およびスレッド) を参照してください)。
FlowHandlerAdapter
handle() 関数は、この関数が:
public ModelAndView handle(HttpServletRequest request,
HttpServletResponse response, Object handler)
したがって、この関数をオーバーライドしても意味がありませんが、この関数はServletExternalContext
メソッドを呼び出して、すべてのフロー変数を保持するオブジェクトを作成します。
protected ServletExternalContext createServletExternalContext(
HttpServletRequest request, HttpServletResponse response)
この関数をオーバーライドすることで、このフロー変数で必要なことをほとんど行うことができます。
これを行うには、 を拡張するクラスを作成し、FlowHandlerAdapter
それを FlowHandlerAdapter の代わりに登録して、createServletExternalContext
関数をオーバーライドします。
基本的に、プロパティServletExternalContext.getSessionMap()
にアクセスしSharedAttributeMap
て登録するために使用します。
HttpServletRequest
およびオブジェクトにアクセスできるためHttpServletResponse
、このメソッドは関数のようにささいなことを行うことができHandlerInterceptorAdapter.postHandle
ます。
以下の例を参照してください。
HandlerInterceptor
MVC とこのオブジェクトのa に同じコードを再利用する一般的な方法を使用する方法を省略しましたが、 を実装することで簡単にコーディングできますHandlerInterceptor
。
MyFlowHandlerAdapter :
package my.package;
public class MyFlowHandlerAdapter extends FlowHandlerAdapter {
@Override
protected ServletExternalContext createServletExternalContext(
HttpServletRequest request,
HttpServletResponse response) {
ServletExternalContext context =
super.createServletExternalContext(request,response);
context.getSessionMap().put("myproperty", "myvalue");
return context;
}
}
FlowHandlerAdapter
次のように webflow-context.xml ファイルで定義されたオブジェクトがあります。
<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerAdapter">
<property name="flowExecutor" ref="flowExecutor"/>
</bean>
に置き換えるだけです:
<bean class="my.package.MyFlowHandlerAdapter">
<property name="flowExecutor" ref="flowExecutor"/>
</bean>