我在创建用户(自用户注册表单 - 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的主题。
我完成了使用钩子修改jsp。但用户模型没有“用户组”。所以我无法打电话。 –
您可以将自定义字段存储为缓存,并使用modelListener将此值在需要的位置移动。 –
我的不好,使用UserLocalServiceUtil工作,而不是UserServiceUtil 基本上,区别在于* ServiceUtil检查权限和* LocalServiceUtil不。但是感谢让我去看“Model Listener”的工作方式大致相同(预定义)。 –