【问题标题】:Issue while adding acustom field in liferay在 liferay 中添加自定义字段时出现问题
【发布时间】:2015-06-09 11:15:40
【问题描述】:

我通过创建用户详细信息表单并调用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() 以编程方式添加用户,所以这里我没有新创建的用户 ID。所以在没有用户 ID 的情况下,如何获取新用户的用户对象并执行自定义字段的插入逻辑。

请有任何建议..

我需要同时创建具有自定义字段值的用户。

提前谢谢..

【问题讨论】:

    标签: liferay hook liferay-6 liferay-theme


    【解决方案1】:

    试试这个

    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());
            }  
    

    之后,对于扩展值

    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 ");
                    }
    

    【讨论】:

      【解决方案2】:

      UserLocalServiceUtil.addUser 方法返回创建的用户 - 即。用户类的实例。您可以使用该实例来添加 expando 属性(并且,如果您需要它,它会初始化 id)。

      另一个解决方案是为 UserLocalService 创建一个服务包装器。服务包装器扩展了原始服务实现并进行了进一步的定制。在您的情况下,您可以覆盖 addUser 方法,让原始实现添加用户 (super.addUser(...)),然后添加 expando 属性。

      有关详细信息,请参阅 Liferay 6.2 开发人员指南中的Overriding a Portal Service

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多