}
public Object processView(GenericMVCContext context)
{
Portlet portlet = (Portlet) context.get("portlet");
RunData data = (RunData) context.get("data");
HttpServletRequest request = data.getRequest();
String template = (String) context.get("template");
logger.info("JSPViewProcessor - processing template " + template);
try
{
// Allow access to portlet from .jsp template
request.setAttribute("portlet", portlet);
// put context in attribute so you can get to it from .jsp template
request.setAttribute("context", context);
// Add js_peid out of convenience
request.setAttribute("js_peid", portlet.getID());
// Add rundata out of convenience (JspService.RUNDATA differs from GenericMVCPortlet.RUNDATA)
request.setAttribute(JspService.RUNDATA, data);
// Retrieve the URL. For backward compatibility, use the URL first
// and then fallback to "template" parameter
PortletEntry pe = (PortletEntry) Registry.getEntry(Registry.PORTLET, portlet.getName());
// Files referenced from default templates folder will be processed
// using JspService. Otherwise, they will be loaded using EcsServletElement
// from where ever they came from.
if (pe.getURL() == null || pe.getURL().trim().length() == 0)
{
if (template != null && -1 == template.indexOf(".jsp"))
{
template = template + ".jsp";
}
logger.info("JSPViewProcessor - locating template - " + data.toString()
+ " - " + template);
//we use the template locator to translate the template
String locatedTemplate = TemplateLocator.locatePortletTemplate(data, template);
logger.info("JSPViewProcessor - located template: " + locatedTemplate);
/*if (locatedTemplate == null)
{
locatedTemplate = TemplateLocator.locateScreenTemplate(data, template);
if (locatedTemplate != null)
{
locatedTemplate = "/screens" + locatedTemplate;
}
logger.debug("JSPViewProcessor - located screen template: " + locatedTemplate);
} */
JspService service = (JspService) ServiceUtil.getServiceByName(JspService.SERVICE_NAME);
// this is only necessary if we don't run in a JSP page environment
// but better be safe than sorry...
service.addDefaultObjects(data);
// handle request
service.handleRequest(data, locatedTemplate);
}
else
{
// Build parameter list to be passed with the jsp
Iterator names = portlet.getPortletConfig().getInitParameterNames();
while (names.hasNext())
{
String name = (String) names.next();
String value = (String) portlet.getPortletConfig().getInitParameter(name);
data.getParameters().setString(name, value);
}
template = pe.getURL();