/* NonRootContextJQueryRenderPatch.java
Purpose:
Description:
History:
Thu Feb 2 17:24:04 TST 2012, Created by jimmyshiau
Copyright (C) 2012 Potix Corporation. All Rights Reserved.
*/
package org.zkoss.zkplus.liferay;
import java.io.IOException;
import java.io.StringWriter;
import java.io.Writer;
import javax.portlet.PortletSession;
import org.zkoss.zk.ui.Page;
import org.zkoss.zk.ui.sys.RequestInfo;
/**
* Used to patch the rendering result of a ZK portlet for Liferay.
* When using ZK portlets with Liferay under non root context, we have
* to add a JSESSIONID under root(/) path.
*
* <p>To use it, you have to specify a library property called
* ""org.zkoss.zk.portlet.PageRenderPatch.class" with this class's name
* ("org.zkoss.zkplus.liferay.NonRootContextJQueryRenderPatch").
*
* @author jimmy
* @since 5.0.11
*/
public class NonRootContextJQueryRenderPatch extends JQueryRenderPatch {
public Writer beforeRender(RequestInfo reqInfo) {
return new StringWriter();
}
public void patchRender(RequestInfo reqInfo, Page page, Writer result, Writer out) throws IOException {
if (getDelay() >= 0)
super.patchRender(reqInfo, page, result, out);
PortletSession p = (PortletSession) reqInfo.getSession().getNativeSession();
out.write("<script>zk.afterMount(function () {" + "document.cookie = 'JSESSIONID=" + p.getId() + "; path=/'"
+ "});</script>");
}
}