
我可以使用以下内容读取cookie:
public voID addlinkedInCV(ActionRequest request,ActionResponse response) throws PortalException,SystemException { httpServletRequest convertReq = PortalUtil.gethttpServletRequest(request); cookie[] cookies = convertReq.getcookies(); ...} 这是我尝试阅读一个失败的尝试.
@OverrIDepublic voID doVIEw(RenderRequest renderRequest,RenderResponse renderResponse) throws IOException,PortletException { httpServletResponse convertRes = PortalUtil.gethttpServletResponse(renderResponse); httpServletResponse originalRes = (httpServletResponse) ((httpServletResponseWrapper) convertRes).getResponse(); cookie linkedIncookie = new cookie("linkedIn",util.getAppKey()); originalRes.addcookie(linkedIncookie);}解决方法 在没有大量修改liferay门户本身的情况下,我发现设置portlet cookie的唯一方法是让portlet生成一个JavaScript,然后让客户端设置cookie. 所以我在doVIEw方法中添加了以下内容.
if (renderRequest.getPortletSession(true).getAttribute("set_cookie")!=null){ return;}String cookie_value = renderRequest.getPortletSession(true).getID();String cookie_hours = "6";StringBuffer buf = new StringBuffer();buf.append("\n <script>");buf.append("\n var today = new Date();");buf.append("\n var expires_date = new Date ( today.getTime() + (" + cookie_hours + "*1000*60*60) );");buf.append("\n document.cookie = \"linkedIn=" + util.getAppKey() + ";expires=\"+expires_date.toGMTString();"); buf.append("\n </script>");renderResponse.setContentType("text/HTML");PrintWriter out = renderResponse.getWriter();out.println(buf.toString());renderRequest.getPortletSession(true).setAttribute(SET_cookie,cookie_value); 虽然不是最佳的,但仍然是一种有效的解决方案;)
总结以上是内存溢出为你收集整理的如何在Liferay portlet中设置Cookie?全部内容,希望文章能够帮你解决如何在Liferay portlet中设置Cookie?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)