从servlet获取serviceContext

时间:2013-10-29 01:57:06

标签: java api servlets liferay liferay-6

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

我是通过调用以下方法来实现的:

UserLocalServiceUtil.sendEmailAddressVerification(..., serviceContext);

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

此类数据的一个重要来源是ThemeDisplay,您可以通过

获取它(在portlet上下文中)
  ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);

由于这是Liferay特有的并且与portlet世界联系在一起,最简单的方法是将当前的servlet代码打包到portlet中。它并不需要花费太多时间,你可以手头拿着一切,而不是试图自己找到所有东西。有没有什么可以阻止你这样做?