Hello Developers,
Just got back from the mmcf weekend and I have a component block which
shows up in a portlet. The only thing I have to solve is the urls in the
component block. It did sound easy: jsut implement the Framework
interface. I tried to do that, but I turns out that I don't have any
control over the argumenta of the Framework.getBlockUrl(). The
componentName is "core" which has JspRenderers. My code in the Portlet
to start render the block.
Component component =
ComponentRepository.getInstance().getComponent(componentName);
String blockname = req.getParameter(BLOCK);
Block block;
if (!StringUtil.isEmpty(blockname)) {
block = component.getDefaultBlock();
}
else {
block = component.getBlock(blockname);
}
Renderer.WindowState state;
if (req.getWindowState() == WindowState.MAXIMIZED) {
state = Renderer.WindowState.MAXIMIZED;
}
else {
if (req.getWindowState() == WindowState.MINIMIZED) {
state = Renderer.WindowState.MINIMIZED;
}
else {
state = Renderer.WindowState.NORMAL;
}
}
Parameters blockParameters = block.createParameters();
blockParameters.set(Parameter.REQUEST,
(javax.servlet.http.HttpServletRequest)req);
blockParameters.set(Parameter.RESPONSE,
(javax.servlet.http.HttpServletResponse)res);
Parameters frameworkParameters =
MMBase.getMMBase().getFramework().createFrameworkParameters();
frameworkParameters.set(MMBaseFramework.PORTLETREQUEST,
req);
frameworkParameters.set(MMBaseFramework.PORTLETRESPONSE,
res);
frameworkParameters.set("component", componentName);
frameworkParameters.set("block", blockname);
try {
Renderer renderer =
block.getRenderer(Renderer.Type.BODY);
req.setAttribute(Renderer.KEY, renderer);
// None of these parameters are passed into
Framework.getBlockUrl()
renderer.render(blockParameters,
frameworkParameters, res.getWriter(), state);
}
catch (FrameworkException e) {
throw new PortletException(e);
}
Regards,
Nico
_______________________________________________
Developers mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/developers