配置:public abstract class BaseAction<T> extends ActionSupport implements ModelDriven<T>, Preparable,IFormDriven
拦截器顺序
<interceptor-stack name="myStack"><!--paramsPrepareParamsStack这个要在前才能先perpareModel -->
<interceptor-ref name="paramsPrepareParamsStack" /> <!-- 实现了modeldriven要用这个拦截栈控制拦截顺序 --><interceptor-ref name="webFormCreateInterceptor"></interceptor-ref>
</interceptor-stack>
拦截器:public String intercept(ActionInvocation invocation) throws Exception {
//把request中的参数转为WebForm对象
HttpServletRequest request = (HttpServletRequest) invocation
.getInvocationContext().get(ServletActionContext.HTTP_REQUEST);
Object action = invocation.getAction();
if (action instanceof IFormDriven) {
IFormDriven formDriven = (IFormDriven) action;
WebForm webForm = FrameworkEngine.creatWebForm(request);// 创建一个form对象,此时request中的数据存放在了WebForm中的一个MAP集合中
formDriven.setForm(webForm);
}
return invocation.invoke();
}
每次new一个Form保证线程安全