我想以编程方式将我的自定义 portlet 添加到控制面板。我该怎么做 ?
2 回答
您可能已经知道要在 ControlPanel 中提供哪个 portlet(您编写的 portlet 数量有限,对吗?)您不需要使其完全编程,但实际上可以像您拥有的任何其他 ControlPanel Portlet 一样声明它. (有关信息,请参阅您的其他问题)
但是,为了使您的管理 portlet 基于动态信息出现/消失,您可以使用此元素的声明(取自http://www.liferay.com/dtd/liferay-portlet-app_6_0_0.dtd)
<!--
The control-panel-entry-class value must be a class that implements
com.liferay.portlet.ControlPanelEntry and is called by the Control Panel to
decide whether the portlet should be shown to a specific user in a specific
context. The default value is set in portal.properties.
See:
http://docs.liferay.com/portal/6.0/javadocs/portal-service/com/liferay/portlet/ControlPanelEntry.html
-->
<!ELEMENT control-panel-entry-class (#PCDATA)>
我认为这在编程上是不可能的,因为:
控制面板页面上的 portlet 不像门户中的其他页面那样存储在数据库中,其中 portlet 存储
typeSettings
在Layout
表中。相反,控制面板页面上的 portlet 由表示标记值的字段的值确定
_controlPanelEntryCategory
,并且该值是通过我认为仅在服务器启动时每次调用的方法为每个 portlet 设置的(in ) 或部署一个 portlet (in )。PortletImpl
<control-panel-entry-category>
liferay-portlet.xml
PortletLocalServiceImpl#_readLiferayPortletXML
initEAR()
initWAR()
因此需要在liferay-portlet.xml
不同的<control-panel-entry-*>
标签中有一个条目才能将portlet 添加到控制面板。这在编程上是不可能的。
这是根据我的推理和理解,但如果这可能的话,我想听听 Liferay 大师的意见。