当前位置: 首页 > 知识库问答 >
问题:

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

廖弘量
2023-03-14

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

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

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

有没有一种方法可以通过使用portlet的名称来获取portlet的Id。我有一个解决方案来获取所有portlet并进行比较,但是如果我可以使用portlet的名称直接获取portlet的Id,这将非常有用。

它很紧急,如果有人知道,请回复,这将是很大的帮助。

提前感谢

共有2个答案

商昆琦
2023-03-14

你可以试试这个:

System.out.println("ID : " + themeDisplay.getPortletDisplay().getId());

System.out.println("InstanceID: " + themeDisplay.getPortletDisplay().getInstanceId());

System.out.println("Portlet Name: " + themeDisplay.getPortletDisplay().getPortletName());

别忘了:

<% ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);
    themeDisplay.getUser().getScreenName(); %>
姜钧
2023-03-14

如果仔细研究如何基于Portlet名称生成Portlet Id,就会得到答案。

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

portlet id的模式:

例如:如果您的portlet名称是在portlet中定义的MyWork。xmlwebapps文件夹中生成的文件(如果您使用的是tomcat)是MyWork portlet,那么生成的Id将是MyWork\u WAR\u MyWorkportlet

现在,如果您有liferay源代码,可以查看PortletLocalServiceImplprivate\u readPortletXML方法。

编辑:
如果你想在一个特定的页面上找到portlet(给定页面的joy-url),那么你可能会发现这个答案很有帮助。

 类似资料:
  • 我使用Liferay portlet bundle 6.2(Tomcat)和Liferay IDE(eclipse)。我创建了两个Liferay插件项目。在第一个portlet(第一个插件portlet)中,我使用portlet首选项保存了一些数据。现在,我将在第一个portlet中显示第二个portlet。我怎么能做到?我找到了下面的代码和这个链接 从其他portlet打开portlet 但是,

  • 问题内容: 我在尝试在 Liferay 6.0 portlet中 设置会话cookie时遇到问题。我希望能够将cookie设置为客户端浏览器,以存储用于linkedin身份验证的应用程序密钥,然后可以在其中通过其他portlet检索它。 我可以使用以下方法读取Cookie: 这是我阅读失败的尝试。 问题答案: 我发现,无需大量修改Liferay门户本身,设置portlet cookie的唯一方法就

  • 我的页面上有大约4个Portlet和2个web内容。在4个portlet中,一个是定制portlet。我的需求就像我需要在最后加载我的定制portlet一样。我知道我们可以通过在liferay portlet中添加以下条目来设置。xml

  • 问题内容: 如果你在视图中并想要使用Python检索应用程序名称(该应用程序名称将用于进一步的逻辑),你将如何做? 问题答案: 你可以这样做: 请参阅如何在Django中获取当前应用程序和 编辑:你现在可以使用,它避免了第二次解析并避免了导入。这样做:

  • 问题内容: 我需要自己编写一些util类,并且需要android应用的程序包名称。虽然我发现仅可在Activity中使用的packageManager等具有上下文。我只想在我的班级中获取包名,该包名将在android应用程序中使用。那我该怎么做呢?谢谢! 问题答案: 用途: 或者 您还可以创建一个函数:

  • 我试图通过命令提示符(create.bat hello world“hello world”)在liferay中使用插件SDK创建一个portlet,但每次都出现以下错误。 > 无法解析配置“:classpath”的所有依赖项。无法解析commons编解码器:commons编解码器:1.9。所需::liferay-plugins-sdk-6.2:未指定无法获取'http://cdn.reposit