2015-05-16 61 views
0

我在創建用戶(自用戶註冊表單 - create_account.jsp)時嘗試添加「用戶組」選擇字段。 這裏自定義字段沒有用,因爲用戶組已經存在於數據庫中。我想插入到現有的Users_UserGroups表中。 我正在使用下面的鉤子: 但用戶沒有添加到組中,並且沒有打印異常。在Liferay Portal中自定義CreateAccountAction

請建議我以任何其他方式來達到此目的。

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

     } 

欲瞭解更多信息,請看看this的主題。

回答

1

使用UserLocalServiceUtil,而不是UserServiceUtil工作。基本上,區別在於* ServiceUtil檢查權限,* LocalServiceUtil不檢查權限。

0

我不確定這是否是最好的主意,但您可以使用鉤子修改用戶creaciónjsp並通過模型監聽器在用戶創建/修改時保存值。

Regsrds

+0

我完成了使用鉤子修改jsp。但用戶模型沒有「用戶組」。所以我無法打電話。 –

+0

您可以將自定義字段存儲爲緩存,並使用modelListener將此值在需要的位置移動。 –

+0

我的不好,使用UserLocalServiceUtil工作,而不是UserServiceUtil 基本上,區別在於* ServiceUtil檢查權限和* LocalServiceUtil不。但是感謝讓我去看「Model Listener」的工作方式大致相同(預定義)。 –