在拦截器中访问struts动作结果的参数

时间:2014-08-26 07:00:43

标签: java spring jsp struts2

我在我的项目中使用struts和spring集成框架。在每次struts动作调用之前我都有一个拦截器。我需要访问我的操作名称,并使用以下代码进行操作:

actionInvocation.getProxy().getActionName();

我在struts.xml中的struts操作是:

<action name="uploadDocument" class="commonAction" method="uploadDocument">
  <interceptor-ref name="sessionStack"/><interceptor-ref name="cachingStack"/>
  <interceptor-ref name="basicStack"/>
  <result name="success" type="stream">
    <param name="contentType">text/html</param>
    <param name="result">inputStream</param>
  </result>
</action>

我需要访问结果标记下的参数。这可能吗?

1 个答案:

答案 0 :(得分:1)

不确定。

您可以在ResultConfig对象like described here中读取结果配置,该对象将公开其参数的Map,如the source code所示。

类似的东西:

// Get the action configuration defined in struts.xml
ActionConfig config = invocation.getProxy().getConfig(); 

// Get the SUCCESS result configured for that Action
ResultConfig success = config.getResults().get("success");

// Iterate the Params, friendly printing :)
for (Map.Entry<String, String> entry : success.getParams().entrySet()) {
    System.out.println("<param name=\"" 
                       + entry.getKey() 
                       + "\">"
                       + entry.getValue()
                       + "</param>");
}