2

也许通过 init(PortletConfig) 中的 PortletConfig

问题是使用

((PortletConfigImpl) portletConfig).getPortletId();

不再允许,因为在 package.properties 中添加 portal-impl.jar 会在尝试执行构建 ant 目标时抛出异常,表示不再允许这样做

对于 companyID,我直接不知道从哪里开始。我目前正在使用

long companyId = CompanyLocalServiceUtil.getCompanies().get(0).getCompanyId();

但是一旦我得到了不止一家公司,它就会失败

如果我能以某种方式获得 Portlet 对象,我认为获得 portletId 和 companyId 就足够了

4

3 回答 3

5

我不是 100% 确定您需要什么,但如果您只有一家公司,您可以使用以下代码获取公司 ID:

PortalUtil.getDefaultCompanyId()
于 2012-09-07T20:13:32.950 回答
3

添加portal-impl.jar到插件一直是问题的根源,而且从来都不是正确的做法。有了这个,我很高兴看到构建脚本现在似乎正在积极禁止它。正如在这个问题中所讨论的,您不应该这样做,并且 portlet API 不支持您想要的。严格来说,您没有必要的上下文来了解已将 portlet 实例添加到哪个公司。

请记住:可能(并且通常是)只有一个 portlet 类的实例,无论 portlet 实例是否放置在任何页面上 - 并且与整个门户中存在多少 portlet 实例无关,跨越所有公司和网站。

你不应该走这条路,而是解释你想用它来实现什么。我们可能会在这方面为您提供帮助,但无法帮助您学习如何实现不可能的事情,或者,如果您发现漏洞,将无法维护并在下一次更新时随机中断,因为它远远超出规范。

于 2012-09-10T07:33:13.340 回答
1

您可以通过get Portletfrom方法获取 from ,然后使用:PortletConfigportletIdPortletconfig.getPortletName()PortletLocalServiceUtil.getPortletById(String)

// I have not tried this but I think it should work
String portletName = Portletconfig.getPortletName();
Portlet portlet = PortletLocalServiceUtil.getPortletById(portletName);
long companyId = portlet.getCompanyId();

然后您可以从 Portlet 轻松获取companyId.

正如 Olaf Kock 在他的回答所说的那样,如果您了解公司的某些方面,这里是另一个答案,它为您提供了一些替代方法来获取由于 Olaf Kock 解释的原因,companyId这种方法不会从 portlet 实例中获取companyId

试试这种方法,看看是否有帮助。

于 2012-09-08T09:02:09.790 回答