2015-04-29 3 views
5

Я создал RenderingPlugin, для использования в WebSphere Portal, который вызывается сервером перед отправкой разметки клиенту. Плагин пропускает все файлы cookie, и если «test» не найден, я бы хотел установить этот файл cookie.Создать файл cookie с использованием HttpServletRequest?

Я знаю, что это возможно с HttpServletResponse, но у RenderingPlugin нет доступа к этому объекту. Он имеет только HttpServletRequest.

Есть ли другой способ сделать это?

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

Существует нет API для установки файла cookie по запросу. Это только ответ. –

+0

У меня такая же проблема. Мне нужно создать файл cookie внутри конечной точки. У меня есть только HttpServletRequest not Response. :( – Hasanthi

ответ

0

Вы пытаетесь с помощью javascript-кода установить cookie?

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

вы отправляете это как часть содержания вы даете Писатель rpm.getWriter() и он будет выполнен в браузере.

+0

проблема в том, что я вставляю плагин рендеринга несколько раз на ту же страницу, cookie еще не был создан после того, как начальный плагин рендеринга будет разрешен. – bobbyrne01

+1

Я думаю, что это также произойдет, если у вас был доступ к объекту ответа http и вызванному addCookie.Таким образом, эта проблема не является специфической для решения javascript. Вы можете использовать объект Session для хранения информации о состоянии, например, это первый раз, когда плагин отображается в области текущего запроса в чтобы избежать установки cookie много раз (если это когда-либо проблема). –

Смежные вопросы