WebSphere Portal 6.1.5のポートレット用にJSR286、Struts2を使用してWebアプリを作成しています。問題は、CookieInterceptorでビルドされた作業を作成できないことです。私はこれをsrc/struts.xmlで試しました:
<package name="web-app-default" extends="struts-portlet-default , json-default" abstract="true">
<interceptors>
<interceptor name="superInterceptor" class="ru.app.SuperInterceptor" />
<interceptor-stack name="ekp-cookie-stack">
<interceptor-ref name="cookie">
<param name="cookiesName">my-filter-cookie</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="portletDefaultStack" />
<global-results>
<result name="error">/jsp/common/error.jsp</result>
</global-results>
</package>
そしてアクション:
public abstract class EventGeneralAction extends GeneralAction implements CookiesAware{
//some code...
/** {@link CookieInterceptor} should inject ekp-filter-cookie. */
@SuppressWarnings("unchecked")
public void setCookiesMap(Map cookies){
LOG.trace("#setCookiesMap -> cookies[{}]", cookies);
this.cookies = cookies;
}
}
メソッドsetCookiesMapは呼び出されません。私はfirebugを使用しましたが、実際には、リクエストヘッダーに「my-filter-cookie」が含まれています(JQuery cookieプラグインを使用して設定)。WebDeveloper for Mozillaは、ブラウザにそのようなCookieがあり、CURRENT_TIME+1年で期限切れになることを示しています。
別の構成を試しました。私は行動のためのインターセプターを書きました:
<!-- Shows events on desired day of year. ShowDayEventsAction is a subclass of EventGeneralAction -->
<action name="main" class="ru.app.ShowDayEventsAction" >
<interceptor-ref name="cookie">
<param name="cookiesName">my-filter-cookie</param>
</interceptor-ref>
<result>/jsp/event/view/day.jsp</result>
</action>
再び失敗する...?私は何を間違えますか?提案してください。