百度空间 | 百度首页 
 
查看文章
 
Struts2中defaultStack的更改问题
2008-06-17 16:19
在Struts2中,默认的struts-default package中有一个defaultStack的拦截器堆栈,据我推断如果不配置则Struts2会默认执行这个堆栈里的拦截器。最近在做项目的时候遇到了这么一个问题,如果想向这个defaultStack中添加一个自定义的interceptor,那么针对两种情况会有不同的配置注意事项。
1. 使用经典的配置方式。
2. 使用annotation的配置方式,也就是所谓的'0'配置。
这两种情况在配置stack的时候有一点不同,第1种,可以配置如下,
<package name="base-package" extends="struts-default">
    <interceptors>
        <interceptor name="ajaxInterceptor" class="interceptors.AjaxInterceptor"></interceptor>
        <interceptor-stack name="defaultStack">
            ...
            <interceptor-ref name="ajaxInterceptor" />
            ...
        </interceptor-stack>
    </interceptors>
</package>
<package name="demo" extends="base-package" namespace="/demo">
    <action name="BizAction_*" method="{1}"
        class="demo.BizAction">
        <result name="input">/demo/BizEdit.jsp</result>
        <result name="list">/demo/BizList.jsp</result>
    </action>
</package>
这个时候是不会出现问题的,在BizAction_*的调用过程中会调用到ajaxInterceptor。注意这里是直接更改defaultStack,而没有另外起名字。
第2种,如果根据如上的配置,是有问题的struts永远也不会调用到ajaxInterceptor,刚开始不明白为什么,其实现在也没太搞清楚原理,感觉无法自定义拦截器了,几乎崩溃,后来发现需要新增一个stack而这个stack的名字不能等于defaultStack,定义如下:
<package name="base-package" extends="struts-default">
    <interceptors>
        <interceptor name="ajaxInterceptor" class="interceptors.AjaxInterceptor"></interceptor>
        <interceptor-stack name="myStack">
            ...
            <interceptor-ref name="ajaxInterceptor" />
            ...
        </interceptor-stack>
    </interceptors>
    <default-interceptor-ref name="myStack"/>
</package>
Action的annotation配置:
@ParentPackage("base-package")
public class WLogAction{
}
这样等于是显式的告诉struts用一个全新定义的package,这样配置后就可以调用到ajaxInterceptor了。

类别:应用 | 添加到搜藏 | 浏览() | 评论 (1)
 
最近读者:
 
网友评论:
4
2009-10-20 15:21 | 回复
chinastruts 您好:
 金梅佼黄b  
 钟根佼圣l  
 入福屡依o  
 围克次、g  
 失斯反杨.  
 利 击子s  
 |劈小 i  
 杨腿S恋n  
 丞密旧情a  
 琳会情招.  
 自前 了c  
 嘲男惹 o  
 最友恼 m  
 大 张 .  
 遗 小 c  
 珠 燕 n  
     /  
     b  
     j  
     o  
     y  
     t  
     m  
     a  
     7  
     0  
     2  
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu