我的目标是编写一个拦截器,添加一些标头作为响应。我目前有以下拦截器
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 配置中定义的拦截器中接收任何标头。
- 有没有更好的方法来做这件事?