如何在Liferay中使用portlet名称获取Portlet Id?

我需要使用portlet名称获取资源权限.

我将使用portlet的名称而不是Id.

portlet的资源许可权名称是该portlet的Id.我检查了Portlet表,它只有Id和其他信息. portlet的其他属性将保存在哪里?

有没有办法通过使用portlet的名称来获取portlet的Id.我有一个workaroud来获取所有portlet并进行比较,但如果我可以使用portlet的名称直接获取portlet的Id,那将会很有帮助.

它的紧急,如果有人知道请回复,这将是非常有帮助的.

提前致谢

最佳答案
如果仔细查看如何根据Portlet名称生成Portlet Id,您将得到答案.

这是一个遵循的常量模式,因此如果您有名称,您可以像liferay一样构造Portlet ID. Liferay还借助portlet名称构造ID.

portlet-id的模式:< xml中的portletname> _WAR_< servlet上下文名称,即没有任何特殊字符的war文件,例如连字符>

例如:
如果您的portlet名称是在portlet.xml中定义的MyWork,并且webapps文件夹中生成的文件(如果您使用的是tomcat)是MyWork-portlet,那么结果Id将是MyWork_WAR_MyWorkportlet.

现在,如果你有liferay源代码,你可以查看PortletLocalServiceImpl的私有_readPortletXML方法.

编辑:
如果您想在特定页面上找到portlet(给定页面的友好URL),那么您可能会发现此answer很有帮助.

转载注明原文:如何在Liferay中使用portlet名称获取Portlet Id? - 代码日志