Je crée une application Web à l'aide de JSR286, Struts2 pour les portlets sur WebSphere Portal 6.1.5 Le problème est que je ne peux pas intégrer le travail dans CookieInterceptor. J'ai essayé cela en src/struts.xml:Portlet Struts2 lire les cookies à l'aide de CookieInterceptor
<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>
Et l'action:
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;
}
}
La méthode setCookiesMap n'est pas invoqué. J'ai utilisé firebug, je vois vraiment, que l'en-tête de la requête contient mon "my-filter-cookie" (défini à l'aide du plugin cookie JQuery). WebDeveloper pour Mozilla montre que le navigateur a un tel cookie et il sera expiré CURRENT_TIME + 1 année.
J'ai essayé une autre configuration. J'ai écrit intercepteur pour l'action:
<!-- 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>
Encore une fois échouer ...? Qu'est-ce que je fais de mal? Veuillez suggérer.
Je viens de l'avoir. Je pensais que ** ** serait ajouté à la pile définie comme ** default-interceptor-ref **, mais c'était mon erreur. –
Sergey
Exception étrange dans SystemOut.log: – Sergey
[22.11.10 23: 31: 30: 177 MSK] 0000006c SystemOut O 11/22 23: 31: 30.176 [AVERTISSEMENT] com.opensymphony.xwork2.util.logging.commons.CommonsLoggerOgnl ValueStack: com.opensymphony.xwork2.util.logging.commons.CommonsLoggerError expression de définition 'my-filter-cookie' avec la valeur 'SOME-VALUE-GOES-HERE': (my-filter) - cookie à l'adresse ognl.SimpleNode. setValueBody (SimpleNode.java:257) Pourquoi ça marche? my-filter-cookie est un cookie ... Ne le comprends pas. Peut-être que le signe '-' est déroutant pour OGNL? – Sergey