我打算编写一个拦截器,在响应中添加一些头文件。目前,我有以下拦截在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
)
....
<!-- Define and add following interceptor in default interceptor stack -->
<interceptor name="CachingInterceptor" class="demo.CachingInterceptor">
....
<action name="myAction" class="demo.myAction">
....
<param name="Cache-control">no-store,no-cache</param>
<param name="Pragma">no-cache</param>
<param name="Expires">-1</param>
....
</action>
现在,我已经在我的拦截器类中定义的属性获取标头值
private String pragma; //with getter, setter
private String expires; //with getter, setter
这里我有两个问题。
1•我无法在java中定义属性“Cache-control”。
2•标题名称是不可预测的,即任何标头可以在配置中被定义为
<param name="other-header">some-value</param>
我有两个问题:
- 我怎么能接受在Struts2配置中定义的拦截任何头。
- 有没有更好的方法来做这件事?
WTQ?您在拦截器放置的静态参数中接收标题。什么是更好地满足您的要求。所描述的 – 2013-04-05 09:08:39
,我想定义HTTP头,同时在配置中映射动作。 – 2013-04-05 13:10:00