ModelDrivenInterceptor的核心源码
【说明】 ModelDrivenInterceptor是默认的拦截器链(struts-default)的一部分,当一个请求经过ModelDrivenInterceptor的时候,它会判断当前要调用的Action对象是否实现了ModelDriven接口, 如果实现了这个接口,则调用getModel()方法,并把返回值压入ValueStack。
// 核心代码:
public class ModelDrivenInterceptor extends AbstractInterceptor {
@Override
public String intercept(ActionInvocation invocation) throws Exception {
Object action = invocation.getAction();
// 如果action实现了ModelDriven接口,则执行下面的代码
if (action instanceof ModelDriven) {
// 把action强转为ModelDriven
ModelDriven modelDriven = (ModelDriven) action;
// 获得值栈
ValueStack stack = invocation.getStack();
// 获得model
Object model = modelDriven.getModel();
if (model != null) {
// ***** 把获得的model压入ValueStack的对象栈(Value Stack Contents)中 *****
stack.push(model);
}
}
return invocation.invoke();
}
}
Struts2源码分析(一) 一一一 ModelDrivenInterceptor
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.