macoo

记录收获的点点滴滴

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1.一旦我们为某包的Action显示的制定了某个拦截器,则默认拦截器不会起作用,如果该Action需要使用该默认拦截器,则必须手动配置该拦截器的引用。只有当Action中没有显示指定拦截器时,该Action所在包的默认拦截器才会而对该Action生效。
2.覆盖拦截器栈中某个拦截器的属性的方法:
<interceptor-ref name="my-stack">
    <param name="second.name">修改后的拦截器</param>
</interceptor-ref>
second为此拦截器栈中某一个拦截器的名字,即<拦截器名>.<参数名>
3.struts2内置拦截器:
chain:构建以个Action链,使当前Action可以访问前一个Action的属性,一般和<result type="chain".../>一起使用
execAndWait:后台执行Action,负责将等待画面发送该用户
model-driven:这是一个用于模型驱动的拦截器,当某个Action类实现了ModelDriver接口时,它负责把getModel()方法的结果堆入ValueStack中。
static-params:这个拦截器负责将xml中<action>标签下<param>标签中的参数传入action
token:这个拦截器主要用于组织重复提交,它检查传到Action中的token,从而防止多次提交
validation:通过执行在xxxAction-validation.xml中定义的校验器,从而完成数据校验
workflow:这个拦截器负责调用Action类的validation方法,如果校验失败,则返回input的逻辑视图
4.如果是为了简化struts.xml文件的配置,避免在每个Action中重复配置拦截器,可以将该拦截器配置成一个默认拦截器栈(这个默认拦截器栈应该包括default-stack拦截器站和权限检查拦截器)
定义自己的默认拦截器栈的配置如下:
<interceptors>
    <interceptor name="authority" class="XXX.XXX"/>
    <interceptor-stack name="mydefault">
        <interceptor-ref name="default-stack"/>
        <interceptor-ref name="authority"/>
    </interceptor-stack>
</interceptors>
<defult-interceptor-ref name="mydefault"/>

posted on 2010-03-15 14:57  macoo  阅读(375)  评论(0编辑  收藏  举报