Настройте действие CreateAccountAction на портале Liferay

Я пытаюсь добавить поле выбора «Группа пользователей» при создании пользователя (форма самостоятельной регистрации пользователя — 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);   
                } 

        } 

для получения дополнительной информации посетите эту тему.


person Pavan JDev    schedule 16.05.2015    source источник


Ответы (2)


Использование UserLocalServiceUtil вместо UserServiceUtil сработало. По сути, разница в том, что *ServiceUtil проверяет разрешения, а *LocalServiceUtil — нет.

person Pavan JDev    schedule 16.05.2015

Я не уверен, что это лучшая идея, но вы можете использовать хук как для изменения пользовательского creación jsp, так и для сохранения значения через прослушиватель модели при создании/изменении пользователя.

Реквизиты

person Eduardo Pérez    schedule 16.05.2015
comment
я закончил модифицировать jsp с помощью хука. Но модель пользователя не имеет группы пользователей. Поэтому я не могу сделать этот звонок. - person Pavan JDev; 16.05.2015
comment
Вы можете сохранить в пользовательском поле, поскольку это был кеш, и использовать modelListener для перемещения этого значения туда, куда вы хотите. - person Eduardo Pérez; 16.05.2015
comment
Плохо, что сработало использование UserLocalServiceUtil вместо UserServiceUtil. По сути, разница в том, что *ServiceUtil проверяет разрешения, а *LocalServiceUtil — нет. Но спасибо, что попросили меня пройти через Model Listener, в основном, работает так же (предопределено). - person Pavan JDev; 17.05.2015