応答にいくつかのヘッダーを追加するインターセプターを作成することを目指しています。現在、次のインターセプターを持っています
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
ここで 2 つの問題があります。
1• Java でプロパティ「Cache-control」を定義できません。
2• ヘッダー名は予測できません。つまり、どのヘッダーも設定で次のように定義できます。
<param name="other-header">some-value</param>
2 つの質問があります。
- Struts2 構成で定義されたインターセプターでヘッダーを受信するにはどうすればよいですか。
- これを行うためのより良い方法はありますか?