2015-04-04 54 views
0

我通过创建用户详细信息表单并调用UserLocalServiceUtil.addUser()来手动创建用户。一切工作正常我可以添加新的用户。单击我的用户详细信息表单中的保存按钮,我将表单详细信息发送到我的行动类别addUser()。在这个方法中,我调用以下方法来创建用户。在Liferay中添加用户字段时出现问题

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。所以如果没有用户标识,我如何才能为新用户获取用户对象,并优化自定义字段的插入逻辑。

任何建议,请..

我需要创建在同一时间的自定义字段值的用户。

预先感谢..

回答

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

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

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

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

相关问题