[英]Receiving unpredictable parameters in Struts2 interceptor
我的目標是編寫一個攔截器,以添加一些標頭作為響應。 我目前有以下攔截器
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>
我有兩個問題:
使用動作配置,您已經定義了幾個通過staticParams
攔截器處理的靜態參數。 該攔截器應首先在堆棧中進行。 然后,您只需從操作上下文中檢索它們。
Map<String, Object> 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]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.