1

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

我通过调用以下方法来做到这一点:

UserLocalServiceUtil.sendEmailAddressVerification(..., serviceContext);

这显然需要ServiceContext传递一个对象才能工作。

ServiceContextFactory.getInstance()不起作用,因为它需要PortletRequest传递一个对象,而这在 servlet 中是不可用的。

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

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

但我无法弄清楚这个世界long groupId代表什么。对此问题的任何帮助或对解决此问题的其他方法的任何建议将不胜感激。

4

1 回答 1

1

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

此类数据的重要来源之一是ThemeDisplay,您可以(在 portlet 上下文中)通过

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

由于这都是 Liferay 特定的并与 portlet 世界相关联,因此获得它的最简单方法是将当前的 servlet 代码打包到 portlet 中。这并不需要太多,你将拥有一切,而不是试图自己找到一切。有什么可以阻止你这样做吗?

于 2013-10-29T09:06:43.930 回答