2015-04-29 17 views
5

Utworzono RenderingPlugin, do użytku w WebSphere Portal, który jest wywoływany na serwerze przed wysłaniem znaczników do klienta. Wtyczka przechwytuje wszystkie pliki cookie i jeśli nie znaleziono "testu", chciałbym ustawić ten plik cookie.Utwórz plik cookie za pomocą HttpServletRequest?

Wiem, że jest to możliwe z HttpServletResponse, ale RenderingPlugin nie ma dostępu do tego obiektu. Ma tylko HttpServletRequest.

Czy jest inny sposób na zrobienie tego?

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

Brak interfejsu API do ustawienia pliku cookie na żądanie. To tylko odpowiedź. –

+0

Mam ten sam problem. Muszę utworzyć plik cookie wewnątrz punktu końcowego. Mam tylko odpowiedź HttpServletRequest, która nie odpowiada. :( – Hasanthi

Odpowiedz

0

Czy próbowałeś użyć kodu javascript do ustawienia pliku cookie?

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

wysłać to jako część zawartości dajesz Writer rpm.getWriter() i zostanie wykonany przez przeglądarkę.

+0

Problem polega na tym, że osadzam wtyczkę do renderowania wiele razy na tej samej stronie, ciasteczko nie zostanie jeszcze utworzone po wstępnym renderowaniu wtyczki. – bobbyrne01

+1

Myślę, że to też by się stało, gdyby miałeś dostęp do obiektu odpowiedzi http i wywołałeś addCookie, więc ten problem nie jest specyficzny dla rozwiązania javascript.Możesz użyć obiektu Session do przechowywania informacji stanowych, tak jak to jest za pierwszym razem, gdy wtyczka jest renderowana w zakresie bieżącego żądania w aby uniknąć wielokrotnego ustawiania ciasteczka (jeśli kiedykolwiek pojawi się problem). –

Powiązane problemy