也许通过init(PortletConfig)中的PortletConfig
事情是使用
((PortletConfigImpl) portletConfig).getPortletId();
不再允许,因为在package.properties中添加portal-impl.jar会在尝试执行build ant target时抛出异常,说不再允许这样做
对于companyID,我直接不知道从哪里开始。我目前正在使用
long companyId = CompanyLocalServiceUtil.getCompanies().get(0).getCompanyId();
但是一旦我有多家公司,它就会失败
如果我能以某种方式得到Portlet对象,我认为这足以同时获得portletId和companyId
答案 0 :(得分:5)
我不是100%确定您需要什么,但如果您只有一家公司,则可以使用以下代码获取公司ID:
PortalUtil.getDefaultCompanyId()
答案 1 :(得分:3)
向插件添加portal-impl.jar
一直是问题的根源,而且从来都不是正确的方法。有了这个,我很高兴看到它实际上似乎现在被构建脚本主动禁止。如this question中所述,您不应该这样做,并且portlet API不支持您想要的内容。您严格地没有必要的上下文来了解添加了portlet实例的公司。
请记住:无论portlet实例是否放置在任何页面上,都可能(并且通常是)只有一个portlet类实例 - 并且与整个门户中的portlet实例数量无关所有公司和网站。
你不应该遵循这条道路,而是解释你想用它实现的目标。我们可能会帮助你,但无法帮助你学习如何实现一些不可能实现的东西,或者,如果你发现一个漏洞,将无法维护并随机打破下一次更新,因为它远远超出了规范。
答案 2 :(得分:1)
您可以从方法Portletconfig.getPortletName()
获取Portlet
到PortletConfig
的{{1}},然后使用PortletLocalServiceUtil.getPortletById(String)
:
portletId
然后从Portlet中您可以轻松获得// I have not tried this but I think it should work
String portletName = Portletconfig.getPortletName();
Portlet portlet = PortletLocalServiceUtil.getPortletById(portletName);
long companyId = portlet.getCompanyId();
。
Olaf Kock在answer中提到了一个提醒 ,因此这是另一个answer,它为您提供了一些替代方法如果您了解公司的某些方面,请companyId
。由于Olaf Kock的解释,这种方法不会从portlet实例中获取companyId
。
尝试这种方法,看看这是否有帮助。