我尝试在执行特定操作后向我的用户发送验证电子邮件(以便他们可以确认其新电子邮件地址)。

我这样做是通过调用以下方法:

UserLocalServiceUtil.sendEmailAddressVerification(..., serviceContext);


这显然需要将ServiceContext对象传递给工作。

ServiceContextFactory.getInstance()无效,因为它需要传递PortletRequest对象,该对象在servlet中不可用。

现在,我读到您可以实例化serviceContext对象本身,然后向其添加以下属性:

ServiceContext serviceContext = new ServiceContext();
serviceContext.setScopeGroupId(groupId);


但是我不知道long groupId代表什么。在此问题上的任何帮助或对该问题的其他方法的任何建议将不胜感激。

最佳答案

groupId是您当前所在的站点-如果要实现servlet,则不会像serviceContext那样拥有它。

此类数据的绝佳来源之一是ThemeDisplay,您可以通过以下方式(在portlet上下文中)获取它:

  ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);


由于所有这些都是Liferay特定的,并且与Portlet紧密相关,因此,获取它的最简单方法是将当前的Servlet代码打包在Portlet中。它并不需要很多,您将拥有一切,而不必自己寻找所有东西。有什么可以阻止您这样做的?

10-02 02:42