Проблема при добавлении пользовательского поля в liferay

Я создаю пользователя вручную, создавая форму сведений о пользователе и вызывая метод UserLocalServiceUtil.addUser(). Все работает нормально, я могу добавить нового пользователя. При нажатии кнопки «Сохранить» в форме сведений о пользователе я отправляю данные формы в свой класс действий addUser(). В этом методе я вызываю следующий метод для создания пользователя.

try {
                UserLocalServiceUtil.addUser(creatorUserId, companyId, autoPassword, password1,
                    password2, autoScreenName, screenName, emailAddress, mySite, openId,
                    locale, firstName, middleName, lastName, prefixId, suffixId, male,
                    birthdayMonth, birthdayDay, birthdayYear, jobTitle, groupIds,
                    organizationIds, roleIds, userGroupIds, sendEmail, serviceContext);


            } catch(Exception e){
                System.out.println(e.getMessage());
            }  

Пользователь создает с приведенным выше кодом. Но проблема в том, что я хочу добавить значение настраиваемого поля также при добавлении пользователя. код для добавления настраиваемого поля выглядит следующим образом:

if(user.getExpandoBridge().hasAttribute("manager"))
                    {

                            user.getExpandoBridge().setAttribute("manager", manager);
                            System.out.println("Custom field is avaliable now !!! Update User entry ");
                    }
                    else
                    {
                            user.getExpandoBridge().addAttribute("manager");
                            user.getExpandoBridge().setAttribute("manager", manager);
                            System.out.println("Custom field is not avaliable !!! Update User entry ");
                    }

Теперь, как я могу выполнить код в методе addUser(). Моя проблема в том, что я программно добавляю пользователя, вызывая UserLocalServiceUtil.addUser(), поэтому здесь у меня нет вновь созданного идентификатора пользователя. так что без идентификатора пользователя, как я могу получить пользовательский объект для нового пользователя и выполнить логику вставки настраиваемого поля.

Любые предложения, пожалуйста..

Мне нужно одновременно создать пользователя с настраиваемым значением поля.

Заранее спасибо..


person Vinod    schedule 04.04.2015    source источник


Ответы (2)


Попробуй это

try {
          User newUser =  UserLocalServiceUtil.addUser(creatorUserId, companyId, autoPassword, password1,
                password2, autoScreenName, screenName, emailAddress, mySite, openId,
                locale, firstName, middleName, lastName, prefixId, suffixId, male,
                birthdayMonth, birthdayDay, birthdayYear, jobTitle, groupIds,
                organizationIds, roleIds, userGroupIds, sendEmail, serviceContext);


        } catch(Exception e){
            System.out.println(e.getMessage());
        }  

После этого для значений Expando

if(newUser.getExpandoBridge().hasAttribute("manager"))
                {

                        newUser.getExpandoBridge().setAttribute("manager", manager);
                        System.out.println("Custom field is avaliable now !!! Update User entry ");
                }
                else
                {
                        newUser.getExpandoBridge().addAttribute("manager");
                        newUser.getExpandoBridge().setAttribute("manager", manager);
                        System.out.println("Custom field is not avaliable !!! Update User entry ");
                }
person aston    schedule 06.04.2015

Метод UserLocalServiceUtil.addUser возвращает созданного пользователя, т.е. экземпляр класса пользователя. Вы можете использовать экземпляр для добавления атрибутов расширения (и, если вам это нужно, у него инициализирован идентификатор).

Другое решение — создать оболочку службы для UserLocalService. Оболочка службы расширяет реализацию исходной службы и выполняет дополнительные настройки. В вашем случае вы можете переопределить метод addUser, позволить исходной реализации добавить пользователя (super.addUser(...)), а затем добавить атрибуты Expando.

Для получения дополнительной информации см. Переопределение службы портала в Руководстве разработчика Liferay 6.2.

person Tomas Pinos    schedule 05.04.2015