从Spring Webflow 2开始,不再生成ModelAndView
对象(请参见SpringSource论坛中的this post(和线程))。
的FlowHandlerAdapter
手柄()函数不会产生ModedAndView了(它只是返回null),即使该功能是:
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
函数一样。
查看下面的示例。
我省略了如何使用通用方法为0123C重复使用MVC和此对象的相同代码,但通过执行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;
}
}
你已经在你的Webflow定义-context.xml文件这样的0对象:
<bean class="my.package.MyFlowHandlerAdapter">
<property name="flowExecutor" ref="flowExecutor"/>
</bean>
:
<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerAdapter">
<property name="flowExecutor" ref="flowExecutor"/>
</bean>
只是更换
您好我有一个在春季Web流程拦截器集成的问题,你可以帮助我。 – 2014-09-25 11:19:13