@Override public List<TemplateHandler> getPortletDisplayTemplateHandlers() { List<TemplateHandler> templateHandlers = TemplateHandlerRegistryUtil.getTemplateHandlers(); List<TemplateHandler> portletDisplayTemplateHandlers = new ArrayList<>(); for (TemplateHandler templateHandler : templateHandlers) { if (templateHandler instanceof BasePortletDisplayTemplateHandler) { portletDisplayTemplateHandlers.add(templateHandler); } else if (ProxyUtil.isProxyClass(templateHandler.getClass())) { InvocationHandler invocationHandler = ProxyUtil.getInvocationHandler(templateHandler); if (invocationHandler instanceof ClassLoaderBeanHandler) { ClassLoaderBeanHandler classLoaderBeanHandler = (ClassLoaderBeanHandler) invocationHandler; Object bean = classLoaderBeanHandler.getBean(); if (bean instanceof BasePortletDisplayTemplateHandler) { portletDisplayTemplateHandlers.add(templateHandler); } } } } return portletDisplayTemplateHandlers; }