我创建了一个RenderingPlugin,用于WebSphere Portal,在将标记发送给客户端之前在服务器端调用了它。该插件会遍历所有cookie,如果未找到“test”,我想设置该cookie。

我知道这可以通过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
        }
    }
}

最佳答案

您是否尝试使用JavaScript代码设置Cookie?

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

您将其作为内容的一部分发送给Writer rpm.getWriter(),它将由浏览器执行。

10-04 12:23