2015-04-04 31 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

相關問題