在Struts2拦截器中接收不可预测的参数

我的目标是编写一个拦截器,在响应中添加一些标头。 我目前有以下拦截器

public class CachingInterceptor extends AbstractInterceptor{ @Override public String intercept(ActionInvocation ai) throws Exception { HttpServletResponse response = (HttpServletResponse) getActionContext(ai).get(StrutsStatics.HTTP_RESPONSE); if(null != response) { response.setHeader("Cache-control","no-store,no-cache"); response.setHeader("Pragma","no-cache"); response.setHeader("Expires","-1"); } return ai.invoke(); } } 

我需要以这样的方式增强它,即可以在配置文件中定义头文件( struts.xml

 ....   ....  .... no-store,no-cache no-cache -1 ....  

现在我必须在拦截器类中定义属性以获取标头的值

 private String pragma; //with getter, setter private String expires; //with getter, setter 

我有两个问题。

1•我无法在java中定义属性“Cache-control”。

2•标题名称是不可预测的,即任何标题都可以在配置中定义为

  some-value 

我有两个问题:

  • 如何在Struts2配置中定义的拦截器中接收任何头。
  • 有没有更好的方法来做这件事?

使用操作配置,您已定义了几个通过staticParams拦截器处理的静态参数。 此拦截器应首先在堆栈中进行。 然后,您只需从动作上下文中检索它们。

 Map params = ActionContext.getContext().getParameters(); response.setHeader("Cache-control", ((String[])params.get("Cache-control"))[0]); response.setHeader("Pragma", ((String[])params.get("Pragma"))[0]); response.setHeader("Expires", ((String[])params.get("Expires"))[0]);