0

我正在尝试在创建用户时添加“用户组”选择字段(自我用户注册表单 - create_account.jsp)。这里自定义字段没有帮助,因为用户组已经存在于数据库中。我想插入现有的 Users_UserGroups 表。我正在使用下面的钩子:但是用户没有添加到组中,也没有打印任何异常。

请建议我以任何其他方式来实现这一目标。

public class CustomCreateAccountAction extends BaseStrutsPortletAction
{ 
    public void processAction(StrutsPortletAction originalStrutsPortletAction, PortletConfig portletConfig, ActionRequest actionRequest, ActionResponse actionResponse) 
                    throws Exception 
            { 
                System.out.println("My Custom Process Action Method is Called"); 

                String emailid=ParamUtil.getString(actionRequest, "emailAddress");
                long[] userGroupIds = null;

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

                System.out.println("This is after user is registered");
                if (SessionErrors.isEmpty(actionRequest)) 
                {
                ThemeDisplay themeDisplay =(ThemeDisplay)actionRequest.getAttribute(WebKeys.THEME_DISPLAY);

                long newlyCreatedUserId=UserLocalServiceUtil.getUserIdByEmailAddress(themeDisplay.getCompanyId(), emailid);

                long userIds[]={newlyCreatedUserId};
                long dummygroupid=16206;

                System.out.println("TEST UserID="+newlyCreatedUserId);
                System.out.println("TEST GroupID="+dummygroupid);
                //Everything went well until here.
                UserServiceUtil.addUserGroupUsers(dummygroupid, userIds);
                //below sysout is not printed. and no exception or user in group db created. 
                System.out.println("user added to group");
                }

            } 


            public String render(StrutsPortletAction originalStrutsPortletAction, PortletConfig portletConfig, RenderRequest renderRequest, RenderResponse renderResponse) throws Exception 
            { 
                System.out.println("My Custom Render Method is Called"); 
                return originalStrutsPortletAction.render(null, portletConfig, renderRequest, renderResponse);   
                } 

        } 

有关更多信息,请查看线程。

4

2 回答 2

1

使用UserLocalServiceUtil而不是UserServiceUtil有效。基本上,区别在于 *ServiceUtil 检查权限而 *LocalServiceUtil 不检查。

于 2015-05-16T23:33:41.407 回答
0

我不确定这是不是最好的主意,但是您可以使用钩子来修改用户 creación jsp 并通过用户创建/修改时的模型侦听器保存值。

注册表

于 2015-05-16T15:15:36.460 回答