在struts2中使用扩展拦截器在没有动作参数的情况下不起作用

在struts2中使用扩展拦截器在没有动作参数的情况下不起作用,struts2,interceptor,Struts2,Interceptor,我有一个配置了拦截器的默认包,我正在将该包扩展到另一个包中并调用同一个拦截器 <action name="availability**"> <param name="subTab">availability</param> <interceptor-ref name="tabStack"/> <result>/WEB-INF/jsp/index.

我有一个配置了拦截器的默认包,我正在将该包扩展到另一个包中并调用同一个拦截器

<action name="availability**">
            <param name="subTab">availability</param>
            <interceptor-ref name="tabStack"/>          
            <result>/WEB-INF/jsp/index.jsp?include=visibilit/availability.jsp</result>                      
        </action>
知道如何将参数传递给扩展拦截器吗


谢谢

你能试试这个语法吗

<action name="availability**">
<interceptor-ref name="tabStack">
     <param name="subTab">availability</param>
</interceptor-ref>
</action>

可利用性
我不确定,但这可能会起作用

您正在调用的getParameters()方法只返回HTTP请求中的参数。在struts.xml中设置的参数称为“静态参数”,您可以(在intercept()方法中)如下访问它们:

ActionConfig config = invocation.getProxy().getConfig();
Map<String, String> parameters = config.getParams();
String subTab = params.get("subTab");
ActionConfig config=invocation.getProxy().getConfig();
Map parameters=config.getParams();
String subTab=params.get(“subTab”);

来源:

尝试过但不起作用,我怀疑这是Struts2上的一个bug(或意外功能)。有趣的是,如果我在包中声明了拦截器,那么它就起作用了;)也许我们可以在拦截器声明时定义参数,而不是在引用itThanks Todd时定义参数。我的代码运行良好,正在提取静态参数。我的问题是,我在stack def中将tabstack放在defaultstack之前,struts没有填充params映射。当然,staticParams拦截器默认情况下会将静态参数添加到请求的参数映射中。但是,如果您使用此方法访问参数,您应该知道,用户可以通过在URL末尾添加“?subTab=xyzy”来覆盖这些参数。请求参数优先于静态参数,除非在staticParams拦截器上设置了“override”。
ActionConfig config = invocation.getProxy().getConfig();
Map<String, String> parameters = config.getParams();
String subTab = params.get("subTab");