2015-04-29 24 views
5

İstemciye işaretlemeyi göndermeden önce sunucuya çağrılan, WebSphere Portal numaralı belgede kullanılmak üzere bir RenderingPlugin oluşturdum. Eklenti tüm çerezleri dolaşır ve 'test' bulunamazsa, bu kuralı ayarlamak isterim.HttpServletRequest kullanarak bir çerez oluşturulsun mu?

Bu, HttpServletResponse ile mümkün olduğunu biliyorum, ancak RenderingPlugin bu nesneye erişemez. Sadece HttpServletRequest var.

Bunu yapmanın başka bir yolu var mı?

public class Request implements com.ibm.workplace.wcm.api.plugin.RenderingPlugin { 

    @Override 
    public boolean render(RenderingPluginModel rpm) throws RenderingPluginException { 

     boolean found = false; 

     HttpServletRequest servletRequest = (HttpServletRequest) rpm.getRequest(); 
     Cookie[] cookie = servletRequest.getCookies(); 

     // loop through cookies 
     for (int i = 0; i < cookie.length; i++) { 

      // if test found 
      if (cookie[i].getName().equals("test")) { 

       found = true; 
      } 
     } 

     if (!found){ 

      // set cookie here 
     } 
    } 
} 
+1

Bir istek üzerine bir çerez ayarlamak için API yok. Bu sadece cevap. –

+0

Aynı problemim var. Son nokta içinde bir çerez oluşturmam gerekiyor. Ben sadece HttpServletRequest Yanıtı yok. :( – Hasanthi

cevap

0

Tanımlama bilgisi için javascript kodunu kullanmayı denediniz mi?

<script> 
document.cookie = "test=1;path=/"; 
</script> 

Eğer Writer rpm.getWriter() vermek içeriğin bir parçası olarak bu gönderip tarayıcı tarafından yürütülecektir.

+0

sorunu, aynı sayfada birden çok kez rendering eklentisini yerleştirirseniz, ilk oluşturma eklentisi çözüldükten sonra çerez oluşturulmayacaktır. – bobbyrne01

+1

http yanıt nesnesine erişebildiniz ve addCookie diye adlandırdınız.Bu nedenle javascript çözümü için spesifik değil. Session nesnesini durum bilgisini saklamak için kullanabilirsiniz. Çerezin birçok kez ayarlanmasını önlemek için (eğer bir sorun varsa). –

İlgili konular