Templates 在liferay的模板中嵌入portlet

Templates 在liferay的模板中嵌入portlet,templates,liferay,portlet,embedding,Templates,Liferay,Portlet,Embedding,我正在使用liferay 6.1 CE(liferay门户社区版6.1.1 CE GA2(Paton/Build 6101/2012年7月31日)) 当我想通过以下代码在模板中嵌入例如导航portlet时: $processor.processPortlet("71_INSTANCE_xyz1") 它在页面中只显示相同的代码,而不是任何portlet 搜索后,我了解到portal impl/src/com/liferay/portlet/layoutconfiguration/util/vel

我正在使用liferay 6.1 CE(liferay门户社区版6.1.1 CE GA2(Paton/Build 6101/2012年7月31日))

当我想通过以下代码在模板中嵌入例如导航portlet时:

$processor.processPortlet("71_INSTANCE_xyz1")
它在页面中只显示相同的代码,而不是任何portlet

搜索后,我了解到
portal impl/src/com/liferay/portlet/layoutconfiguration/util/velocity/TemplateProcessor.java
文件中的
TemplateProcessor
类中有一个bug

TemplateProcessor.processPortlet()
忽略提供的portletId

我可以通过钩子或扩展来解决这个问题吗

如果没有,如何解决问题

在模板中嵌入portlet时,我在日志中收到以下错误:

09:23:22,898 ERROR [http-bio-8080-exec-2][LiferayMethodExceptionEventHandler:33] java.lang.NullPointerException
java.lang.NullPointerException
at com.liferay.portal.model.PortletConstants.getRootPortletId(PortletConstants.java:85)
at com.liferay.portal.service.impl.PortletLocalServiceImpl.getPortletById(PortletLocalServiceImpl.java:403)
at sun.reflect.GeneratedMethodAccessor254.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:122)
at com.liferay.portal.spring.aop.ServiceBeanAopProxy.invoke(ServiceBeanAopProxy.java:211)
at $Proxy65.getPortletById(Unknown Source)
at com.liferay.portal.service.PortletLocalServiceUtil.getPortletById(PortletLocalServiceUtil.java:353)
at com.liferay.portlet.layoutconfiguration.util.RuntimePortletImpl.processPortlet(RuntimePortletImpl.java:115)
at com.liferay.portlet.layoutconfiguration.util.RuntimePortletImpl.processPortlet(RuntimePortletImpl.java:203)
at com.liferay.portlet.layoutconfiguration.util.RuntimePortletImpl.processPortlet(RuntimePortletImpl.java:190)
at com.liferay.portlet.layoutconfiguration.util.RuntimePortletUtil.processPortlet(RuntimePortletUtil.java:87)

以下代码适用于我的主题(.vm文件)和布局模板(.tpl文件)


$theme.runtime(“my\u portlet\u WAR\u myportlet”)

如果您需要修复TemplateProcessor类中的错误,您必须使用ext plugin,因为所提到的类位于portal-impl中。您可以指定您将portlet嵌入的
模板中的内容吗?是主题中的
portal normal.vm
,还是您正在谈论的web内容模板。我的问题是关于web内容模板有关此主题的更多信息: