Source Taste: Struts 2:ModelDrivenInterceptor
来源:互联网 发布:mac队全灭动态图解 编辑:程序博客网 时间:2024/06/03 12:33
PART 1:
public class ModelDrivenInterceptor extends AbstractInterceptor { protected boolean refreshModelBeforeResult = false; public void setRefreshModelBeforeResult(boolean val) { this.refreshModelBeforeResult = val; } //Derek: the signature is impressive and noteworthy, recursively invoked scenario @Override public String intercept(ActionInvocation invocation) throws Exception { Object action = invocation.getAction(); if (action instanceof ModelDriven) { ModelDriven modelDriven = (ModelDriven) action; ValueStack stack = invocation.getStack(); Object model = modelDriven.getModel(); if (model != null) { //Derek: Notice the exact simple behavior of ModelDriven stack.push(model); } if (refreshModelBeforeResult) { invocation.addPreResultListener(new RefreshModelBeforeResult(modelDriven, model)); } } //Derek: Notice the return clause, which enables recurrsive invoking. return invocation.invoke(); }
THINK: Under the params-prepare-params pattern, the first time parametersInterceptor invoked must not apply the params to any model, since no model pushed into ValueStack at that moment.
INVESTIGATE: When does Struts 2 set values for the model's properties?
DELVE: the model object would be on the top of the stack? and would be matched with priority(given top-down retrieval)?
- Source Taste: Struts 2:ModelDrivenInterceptor
- Source Taste: Struts 2 ActionContext
- Source Taste: Struts 2: ValueStack
- Source Taste: Struts 2 org.apache.struts2.dispatcher.Dispatcher
- Source Taste: Struts 2: com.opensymphony.xwork2.interceptor.ParametersInterceptor
- Source Taste: Spring DefaultListableBeanFactory
- Source Taste: Java ThreadLocal
- Source Taste: JPA: InheritanceType
- Source Taste: Activiti: StartProcessInstanceClickListener
- Source Taste: Hibernate/JPA: AbstractEntityManagerImpl
- Source Taste: Hibernate/JPA: StatefulPersistenceContext
- Source Taste:Command Pattern in Activiti
- Source Taste: Hibernate/JPA: PersistenceContextType & PersistenceUnitTransactionType
- Source Taste: Hibernate/JPA: AbstractSessionImpl & SessionImpl
- Source Taste: Spring Data: Redis: JdkSerializationRedisSerializer
- Silverlight 2 Taste Released!
- Source Taste: Activiti: org.activiti.engine.impl.form.JuelFormEngine
- Source Taste: Activiti: The Journey of Submit StartForm
- 每日定时任务,只取时分秒
- CString的构造函数
- 使用移动GIS技术改进你的企业和项目
- 弹出框 weeboxs 使用教程
- 操作系统的shell是个什么东西?(也谈为什么双击.exe后黑屏闪一下就消失)
- Source Taste: Struts 2:ModelDrivenInterceptor
- secureCRT 显示乱码问题(总结)
- SipDroid的研究
- 【【【【拉票贴】】】】欢迎经常阅读敏捷开发博客文章的网友前来投票
- InputStream和OutputStream
- IE6/IE7中li底部3px的Bug
- 编程之美——子数组之和的最大值(二维)
- STL源码剖析——序列式容器
- hdu1108