在liferay钩子struts动作过程方法中获取新创建的用户的用户ID

时间:2014-09-30 10:18:58

标签: java liferay struts portlet

使用Liferay 6.2 GA1平台

如何在Struts portlet操作类方法processAction中获取新创建的用户的用户ID,我将覆盖/ admin_user / edit_user操作,

目的:在动作类中获取新创建的用户ID,并将其保存到另一个表(在另一个数据库中)。

 public void processAction(
        StrutsPortletAction originalStrutsPortletAction,
        PortletConfig portletConfig, ActionRequest actionRequest,
        ActionResponse actionResponse)
    throws Exception {
    ThemeDisplay themeDisplay =
        (ThemeDisplay)actionRequest.getAttribute(WebKeys.THEME_DISPLAY);

    Long currentuser = themeDisplay.getUserId();

    if (currentuser != null) {
        log.info("Wrapped /admin_server/edit_user action");

    }

originalStrutsPortletAction.processAction(
        originalStrutsPortletAction, 
        portletConfig, 
        actionRequest,
        actionResponse);

 User selUser = (User) actionRequest.getAttribute("USER");

    log.info("User ID : "+selUser.getUserId());


}

但是获取的用户ID是登录用户的用户ID。

如何获取新用户ID?

1 个答案:

答案 0 :(得分:3)

只调用originalStrutsPortletAction的processAction不会确认是否会创建用户。

所以你必须通过SessionErrors.isEmpty(actionRequest)检查SessionErrors是否为空。

检查此条件后,您可以使用以下代码获取新创建用户的userId。

ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(
            WebKeys.THEME_DISPLAY);
UserLocalServiceUtil.getUserIdByEmailAddress(themeDisplay.getCompanyId(), ParamUtil.getString(
            actionRequest, "emailAddress"))