import org.kuali.rice.krad.uif.component.Component; //导入方法依赖的package包/类
/**
* {@inheritDoc}
*/
@Override
protected void performLifecycleTask() {
Component component = (Component) getElementState().getElement();
if (!component.isRender() || component.getTemplate() == null) {
return;
}
LifecycleRenderingContext renderingContext = ViewLifecycle.getRenderingContext();
renderingContext.clearRenderingBuffer();
renderingContext.importTemplate(component.getTemplate());
for (String additionalTemplate : component.getAdditionalTemplates()) {
renderingContext.importTemplate(additionalTemplate);
}
try {
Environment env = renderingContext.getEnvironment();
// Check for a single-arg macro, with the parameter name "component"
// defer for parent rendering if not found
Macro fmMacro = (Macro) env.getMainNamespace().get(component.getTemplateName());
if (fmMacro == null) {
return;
}
String[] args = fmMacro.getArgumentNames();
if (args == null || args.length != 1 || !component.getComponentTypeName().equals(args[0])) {
return;
}
FreeMarkerInlineRenderUtils.renderTemplate(env, component,
null, false, false, Collections. emptyMap());
component.setRenderedHtmlOutput(renderingContext.getRenderedOutput());
component.setSelfRendered(true);
} catch (Throwable e) {
if (ViewLifecycle.isStrict()) {
LOG.warn("Error rendering component during lifecycle phase " + getElementState()
+ " falling back to higher level rendering", e);
} else if (ViewLifecycle.isTrace() && LOG.isDebugEnabled()) {
LOG.debug("component rendering failed during lifecycle phase " + getElementState()
+ " falling back to higher level rendering", e);
}
}
}