ModelDriven拦截器
2016-04-09 20:10
211 查看
关于Parameters 拦截器
Parameters 拦截器将把表单字段映射到 ValueStack 栈的栈顶对象的各个属性中. 如果某个字段
在模型里没有匹配的属性, Param 拦截器将尝试 ValueStack 栈中的下一个对象
Action 实现 ModelDriven 接口后的运行流程
1. 先会执行 ModelDrivenInterceptor 的 intercept 方法.
值栈中下一个对象对应的属性...
接下来-------->Parameters开始工作
Parameters 拦截器将把表单字段映射到 ValueStack 栈的栈顶对象的各个属性中.
因为此时 ValueStack 栈的栈顶元素是刚被压入的模型对象, 所以该模型将被填充.
如果某个字段在模型里没有匹配的属性, Param 拦截器将尝试 ValueStack 栈中的下一个对象
Parameters 拦截器将把表单字段映射到 ValueStack 栈的栈顶对象的各个属性中. 如果某个字段
在模型里没有匹配的属性, Param 拦截器将尝试 ValueStack 栈中的下一个对象
Action 实现 ModelDriven 接口后的运行流程
1. 先会执行 ModelDrivenInterceptor 的 intercept 方法.
public String intercept(ActionInvocation invocation) throws Exception { //获取 Action 对象: EmployeeAction 对象, 此时该 Action 已经实现了 ModelDriven 接口 //public class EmployeeAction implements RequestAware, ModelDriven<Employee> Object action = invocation.getAction(); //判断 action 是否是 ModelDriven 的实例 if (action instanceof ModelDriven) { //强制转换为 ModelDriven 类型 ModelDriven modelDriven = (ModelDriven) action; //获取值栈 ValueStack stack = invocation.getStack(); //调用 ModelDriven 接口的 getModel() 方法 //即调用 EmployeeAction 的 getModel() 方法 /* public Employee getModel() { employee = new Employee(); return employee; } */ Object model = modelDriven.getModel(); if (model != null) { //把 getModel() 方法的返回值压入到值栈的栈顶. 实际压入的是 EmployeeAction 的 employee 成员变量 stack.push(model); } if (refreshModelBeforeResult) { invocation.addPreResultListener(new RefreshModelBeforeResult(modelDriven, model)); } } return invocation.invoke(); }2. 执行 ParametersInterceptor 的 intercept 方法: 把请求参数的值赋给栈顶对象对应的属性. 若栈顶对象没有对应的属性, 则查询
值栈中下一个对象对应的属性...
接下来-------->Parameters开始工作
Parameters 拦截器将把表单字段映射到 ValueStack 栈的栈顶对象的各个属性中.
因为此时 ValueStack 栈的栈顶元素是刚被压入的模型对象, 所以该模型将被填充.
如果某个字段在模型里没有匹配的属性, Param 拦截器将尝试 ValueStack 栈中的下一个对象
相关文章推荐
- Dijkstra算法
- 屏幕适配(1)
- 17.合并两个排序的链表|剑指Offer
- XML CDATA
- 矩阵特征值分解与奇异值分解含义解析及应用
- Java笔试题(一)
- 5、数据库“表”相关
- 团队介绍
- Leetcode Merge k Sorted Lists
- Scala模式匹配
- nova boot代码流程分析(一):Claim机制
- Search and Replace的正则表达式
- 团队介绍
- 一个简单的触发器示例
- 树状数组讲解
- 全排列的递归和非递归实现(permutation)(C++)
- GitHub 中国区前 100 名到底是什么样的人?
- vim的几种模式和按键映射
- nyoj237 游戏高手的烦恼(最小点覆盖)
- tomcat(3)连接器