如何在不访问ThemeDisplay
的情况下获取Liferay中的全局(公司)组ID?
P.S.:使用ThemeDisplay
很简单:themeDisplay.getCompanyGroupId()
。
当您的门户中只有一个公司
时:
Company company = CompanyLocalServiceUtil.getCompanyByMx(PropsUtil.get(PropsKeys.COMPANY_DEFAULT_WEB_ID));
long globalGroupId = company.getGroup().getGroupId();
CompanyLocalServiceUtil.getCompanyByMx(..)
这个方法在哪里找到的?太好了,谢谢! - MarkCompanyLocalServiceUtil.getCompanyByWebId()
会更加正确。 - AdrianRM在扩展 黄色答案 的基础上,如果您知道 Portal 实例(Company
)的某个值,可以找到 company
:
如果您知道门户实例的webId
,则可以通过以下方式找到company
:
String webId = "liferay.com"; // PropsUtil.get(PropsKeys.COMPANY_DEFAULT_WEB_ID)
Company company = CompanyLocalServiceUtil.getCompanyByWebId(webId);
long globalGroupId = company.getGroup().getGroupId();
如果您知道门户实例的邮件域,可以通过以下方式找到公司:company
。String mailDomain = "liferay.com";
Company company = CompanyLocalServiceUtil.getCompanyByMx(mailDomain);
long globalGroupId = company.getGroup().getGroupId();
如果您知道门户实例的虚拟主机,可以通过以下方式找到公司:
String virtualHost = "localhost";
Company company = CompanyLocalServiceUtil.getCompanyByVirtualHost(virtualHost);
long globalGroupId = company.getGroup().getGroupId();
如有兴趣,还可以探索CompanyLocalServiceUtil
中提供的其他有用方法。
感谢Yellow提供的线索,它真的很有帮助。
GroupLocalServiceUtil.getCompanyGroup(PortalUtil.getDefaultCompanyId()).getGroupId();
public static long getDefaultCompanyId(){
long companyId = 0;
try{ companyId = getDefaultCompany().getCompanyId(); }
catch(Exception e){ System.out.println(e.getClass() + " " +e.getMessage()); }
return companyId;
}
public static long getDefaultGroupId (){
long companyId = getDefaultCompanyId();
long globalGroupId = 0L;
Group group = null;
try {
group = GroupLocalServiceUtil.getGroup(companyId, "Guest");
} catch (PortalException | SystemException e) {
e.printStackTrace();
return globalGroupId;
}
globalGroupId = group.getGroupId();
return globalGroupId;
}
com.liferay.portal.kernel.util.PortalUtil.getDefaultCompanyId()