2010-11-20 23 views
0

WebSphere Portal 6.1.5 portletleri için JSR286, Struts2'yi kullanarak web uygulaması oluşturuyorum Sorun, CookieInterceptor'da iş yapamıyorum. Ben src/struts.xml bu denedim:Struts2 portlet çerezleri kullanarak çerezleri oku 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> 

Ve motor: setCookiesMap çağrılır değil

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; 
     } 
    } 

yöntemi. Firebug kullandım, gerçekten görüyorum, bu istek üstbilgisinde "benim-filtre-cookie" var (JQuery cookie eklentisini kullanarak). Mozilla için WebDeveloper, tarayıcının böyle bir çerez içerdiğini ve bu sürenin CURRENT_TIME + 1 yıl sona ereceğini gösterir.

Başka bir yapılandırma denedim. Eylem için önleme yazdım:

<!-- 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> 

Yine başarısız ...? Neyi yanlış yapıyorum? Lütfen öner.

cevap

0

Sen şunlardır:

  • "superInterceptor" adlı bir önleme tanımlanması
  • çerez sadece oluşur "ekp-cookie-yığını" adlı bir avcı yığını, tanımlama (yani uyuyor burada emin değilim) varsayılan önleme yığını olarak "portletDefaultStack" bildirme önleme

"portletDefaultStack" senin "ekp-çerez yığını", daha sonra çerez intercepto ihtiva etmediğinden r çağrılmayacak. Temel olarak, bir yığını yapılandırıyorsunuz ve Struts2'ye farklı bir yığın kullanacaklarını söylüyorsunuz.

bu deneyin:

<interceptor-stack name="portletDefaultStackWithCookie"> 
    <interceptor-ref name="portletState"/> 
    <interceptor-ref name="portletAware"/> 
    <interceptor-ref name="cookie"> 
     <param name="cookiesName">my-filter-cookie</param> 
    </interceptor-ref> 
    <interceptor-ref name="defaultStack"/> 
</interceptor-stack> 

<default-interceptor-ref name="portletDefaultStackWithCookie" /> 

Ayrıca düzgün çağrılan ediliyor emin olmak için CookieInterceptor 'ın intercept yönteminde bir kesme noktası ayarlamak isteyebilirsiniz.

+0

Sadece anladım. Düşündüm ki, ** **, ** default-interceptor-ref ** olarak tanımlanan yığına eklenecektir, ama benim hatamdı. – Sergey

+0

SystemOut.log'da garip bir istisna var: – Sergey

+0

[22.11.10 23: 31: 30: 177 MSK] 0000006c SystemOut O 11/22 23: 31: 30.176 [WARN] com.opensymphony.xwork2.util.logging.commons.CommonsLoggerOgnl ValueStack: com.opensymphony.xwork2.util.logging.commons.CommonsLoggerError ayar ifadesi 'my-filter-cookie' değeri ile 'SOME-VALUE-GOEs-HERE': (my- filter) - ognl.SimpleNode öğesinde . setValueBody (SimpleNode.java:257) Neden çalışıyor? benim-filtre-cookie bir çerez ... Anlama. Belki '-' işareti OGNL için kafa karıştırıcıdır? – Sergey

İlgili konular