在struts2中使用扩展拦截器不适用于动作参数

时间:2010-06-18 03:39:53

标签: struts2 interceptor

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

<action name="availability**">
            <param name="subTab">availability</param>
            <interceptor-ref name="tabStack"/>          
            <result>/WEB-INF/jsp/index.jsp?include=visibilit/availability.jsp</result>                      
        </action>

问题是我的拦截器代码中没有读取参数:

Map params = invocation.getInvocationContext().getParameters();
subTab = params.get("subTab").toString(); //NULL exception

我知道如何将参数传递给扩展拦截器吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

你能尝试这种语法

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

我不确定但也许这会起作用

答案 1 :(得分:0)

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

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

来源:StaticParametersInterceptor.java