我正在尝试在执行某项操作后向我的用户发送验证电子邮件(以便他们确认新的电子邮件地址)。
我是通过调用以下方法来实现的:
UserLocalServiceUtil.sendEmailAddressVerification(..., serviceContext);
显然需要传递ServiceContext
个对象才能工作。
ServiceContextFactory.getInstance()
将无效,因为它需要传递PortletRequest
个对象,这在servlet中不可用。
现在我读到你可以实例化serviceContext
对象本身,然后添加以下属性:
ServiceContext serviceContext = new ServiceContext();
serviceContext.setScopeGroupId(groupId);
但我无法弄清楚世界long groupId
代表什么。对此问题的任何帮助或对此问题的其他方法的任何建议将不胜感激。
答案 0 :(得分:1)
groupId
是您所在的当前站点 - 如果您正在实现servlet,则不会像serviceContext那样拥有它。
此类数据的一个重要来源是ThemeDisplay
,您可以通过
ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);
由于这是Liferay特有的并且与portlet世界联系在一起,最简单的方法是将当前的servlet代码打包到portlet中。它并不需要花费太多时间,你可以手头拿着一切,而不是试图自己找到所有东西。有没有什么可以阻止你这样做?