在portray中嵌入portlet

时间:2014-03-10 11:36:22

标签: templates liferay portlet embedding

我正在使用liferay 6.1 CE(Liferay Portal Community Edition 6.1.1 CE GA2(Paton / Build 6101/2012年7月31日))

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

$processor.processPortlet("71_INSTANCE_xyz1")

它只显示页面中的相同代码而不是任何portlet!

搜索后,我了解TemplateProcessor文件中的portal-impl/src/com/liferay/portlet/layoutconfiguration/util/velocity/TemplateProcessor.java课程中存在错误

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)

1 个答案:

答案 0 :(得分:0)

以下代码适用于主题(.vm文件)和LayoutTemplate(.tpl文件)

$theme.runtime("my_portlet_WAR_myportlet")