在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]);