paramsPreparParamsStack 和 defaultStack 一样都是连接器栈。
而stack-default包默认使用defaultStack
可以在struts配置文件中通过以下方式修改默认拦截器栈
<default-interceptior-ref name="paramsPreparParamsStack"/>
paramsPreparParamsStack的流程
params -> modelDriven -> params
先把请求参数付给Action对应属性,再将Action指定对象压入值栈顶,最后再为栈顶对象的属性赋值
若Action实现了Preparable拦截器接口
paramsPreparParamsStack的流程
params ->prepar-> modelDriven -> params
1. params拦截器首先给action中的相关参数赋值,如id
2. prepare拦截器执行prepare方法,prepare方法中会根据参数,如id,去调用业务逻辑,设置model对象
Action 方法需实现 prepare() 方法
PrepareInterceptor 拦截器将调用 prepare() 方法,prepareActionMethodName()方法 或 prepareDoActionMethodName ()方法
PrepareInterceptor 拦截器根据 firstCallPrepareDo 属性决定获取 prepareActionMethodName 、prepareDoActionMethodName的顺序。
默认情况下先获取 prepareActionMethodName (), 如果没有该方法,就寻找prepareDoActionMethodName()。如果找到对应的方法就调用该方法
PrepareInterceptor 拦截器会根据 alwaysInvokePrepare 属性决定是否执行prepare()方法.
可以为每一个 ActionMethod 准备 prepare[ActionMethdName] 方法, 而抛弃掉原来的 prepare() 方法
将 PrepareInterceptor 的 alwaysInvokePrepare 属性置为 false, 以避免 Struts2 框架再调用 prepare() 方法.
在配置文件中为拦截器栈的属性赋值:
3. modelDriven拦截器将model对象压入value stack,这里的model对象就是在prepare中创建的
4. params拦截器再将参数赋值给model对象
而stack-default包默认使用defaultStack
可以在struts配置文件中通过以下方式修改默认拦截器栈
<default-interceptior-ref name="paramsPreparParamsStack"/>
paramsPreparParamsStack的流程
params -> modelDriven -> params
先把请求参数付给Action对应属性,再将Action指定对象压入值栈顶,最后再为栈顶对象的属性赋值
若Action实现了Preparable拦截器接口
paramsPreparParamsStack的流程
params ->prepar-> modelDriven -> params
1. params拦截器首先给action中的相关参数赋值,如id
2. prepare拦截器执行prepare方法,prepare方法中会根据参数,如id,去调用业务逻辑,设置model对象
Action 方法需实现 prepare() 方法
PrepareInterceptor 拦截器将调用 prepare() 方法,prepareActionMethodName()方法 或 prepareDoActionMethodName ()方法
PrepareInterceptor 拦截器根据 firstCallPrepareDo 属性决定获取 prepareActionMethodName 、prepareDoActionMethodName的顺序。
默认情况下先获取 prepareActionMethodName (), 如果没有该方法,就寻找prepareDoActionMethodName()。如果找到对应的方法就调用该方法
PrepareInterceptor 拦截器会根据 alwaysInvokePrepare 属性决定是否执行prepare()方法.
可以为每一个 ActionMethod 准备 prepare[ActionMethdName] 方法, 而抛弃掉原来的 prepare() 方法
将 PrepareInterceptor 的 alwaysInvokePrepare 属性置为 false, 以避免 Struts2 框架再调用 prepare() 方法.
在配置文件中为拦截器栈的属性赋值:
<interceptors>
<interceptor-stack name="parentStack">
<interceptor-ref name="paramsPrepareParamsStack">
<param name="prepare.alwaysInvokePrepare">false</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="parentStack"/>
3. modelDriven拦截器将model对象压入value stack,这里的model对象就是在prepare中创建的
4. params拦截器再将参数赋值给model对象