2015-04-29 8 views
5

Ho creato un RenderingPlugin, per l'uso in WebSphere Portal, che viene richiamato serveride prima di inviare markup al client. Il plug-in scorre tutti i cookie e se "test" non viene trovato, mi piacerebbe impostare quel cookie.Creare un cookie utilizzando HttpServletRequest?

So che questo è possibile con unoma il RenderingPlugin non ha accesso a tale oggetto. Ha solo un HttpServletRequest.

C'è un altro modo per farlo?

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

Non esiste alcuna API per impostare un cookie su una richiesta. Questa è solo la risposta. –

+0

Ho lo stesso problema. Ho bisogno di creare un cookie all'interno di un endpoint. Ho solo HttpServletRequest not Response. :( – Hasanthi

risposta

0

Hai provato a utilizzare il codice javascript per impostare il cookie?

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

si invia questo come parte del contenuto assegnato alla Writer rpm.getWriter() e verrà eseguito dal browser.

+0

il problema è che se incorporo il plugin di rendering più volte nella stessa pagina, il cookie non sarà stato ancora creato dopo che il plugin di rendering iniziale è stato risolto. – bobbyrne01

+1

Penso che questo accadrà anche se hai avuto accesso all'oggetto di risposta http e hai chiamato addCookie.Questo problema non è specifico per la soluzione javascript.È possibile utilizzare l'oggetto Session per memorizzare informazioni stateful come è questa la prima volta che il plugin viene reso nell'ambito della richiesta corrente in per evitare di impostare il cookie molte volte (se è sempre un problema). –

Problemi correlati