我正在使用IPC与多个portlet进行通信。 因此,我们有一个通用管理portlet,它具有配置属性,将存储在portlet首选项中。
如果我想在任何其他portlet中获取特定portlet的portlet首选项,我应该知道它的ID。
So, How do I set the portlet ID for my portlets manually, how do I get that in code?
答案 0 :(得分:1)
当你谈到“一个特定的其他portlet”时,你似乎已经知道要访问的portlet - 因此应该可以访问它的id ...或者换句话说,我不确定是什么您正在尝试实现,或者您的UniversalAdmin portlet将如何访问该信息。
基本上,Liferay的API可让您访问可在Liferay中创建的不同网站,例如: as GroupService(网站的技术名称为“group”)。 Liferay中的页面称为布局,站点/组由最多两个LayoutSets(公共和私有页面)组成。通过这些布局,您可以访问其中包含的portlet。只需查看http://docs.liferay.com/portal/6.1/javadocs/处的完整API即可。有助于对Liferay的ServiceBuilder有一些基本的了解,以了解如何使用API
编辑:正如您所说,您希望自己生成portlet ID。你最了解自己为什么要这样做 - 我建议你研究一下古老的Sevencogs示例代码。不幸的是它已经停止了(你会在旧的源代码版本中找到它),但James Falkner有blogged about some of its features。您特别想查看“将布局添加到布局(页面)”和“向布局添加资源”这些段落 - 但其余部分也非常有趣。
简而言之:Liferay依赖于此ID的某些元素可重现 - 对于不可实例化的portlet,您别无选择且ID已完全预先确定。对于可实现的portlet,此预定ID后跟“ INSTANCE ”和一些随机字符。正如我上面所说:当你自己运行随机数生成器而不是依赖现有机制时,我不清楚你获得了什么,但你会更清楚地知道你想要实现的目标。
答案 1 :(得分:0)
我没有想过改变portlet id的方法。
虽然如果要在每个portlet中定义特定的id,可以使用portlet.xml的portle-name标签来设置伪id。通过这种方式,您可以使用此标记作为引用每个portlet的唯一ID。