Liferay 如何在life ray现有用户表中添加自定义字段?
我有一个要求,即网站所有者拥有创建用户的权限,并且能够查看仅由他创建的用户列表 为了实现同样的目的,我创建了一个portlet,它的表单包含基本的用户详细信息。在我的action类中提交表单时,我通过调用以下方法在user_uu表中插入用户详细信息:Liferay 如何在life ray现有用户表中添加自定义字段?,liferay,hook,liferay-6,liferay-aui,expando,Liferay,Hook,Liferay 6,Liferay Aui,Expando,我有一个要求,即网站所有者拥有创建用户的权限,并且能够查看仅由他创建的用户列表 为了实现同样的目的,我创建了一个portlet,它的表单包含基本的用户详细信息。在我的action类中提交表单时,我通过调用以下方法在user_uu表中插入用户详细信息: try{ UserLocalServiceUtil.addUser(creatorUserId, companyId, autoPassword, password1, password2, autoScreenName, scr
try{
UserLocalServiceUtil.addUser(creatorUserId, companyId, autoPassword, password1, password2,
autoScreenName, screenName, emailAddress, facebookId, openId, locale, firstName, middleName, lastName,
prefixId, suffixId, male, birthdayMonth,birthdayDay, birthdayYear, jobTitle, groupIds,
organizationsIds, roleIds, userGroupIds, sendEmail, serviceContext);
}
catch(Exception e)
{
}
int userCount = UserLocalServiceUtil.getUsersCount();
现在用户正在用户表中创建。但是,在显示用户列表时,我只需要显示该网站所有者创建的用户
因此,我想在用户表中再插入一列,如siteId
,在基于siteId
获取时,我想优化列表并在UI上显示
因此,我已经经历了Expando的概念,但我没有得到正确的想法如何使用它根据我的要求
因此,任何人请建议我如何在调用addUser
方法和基于此siteId
获取用户列表时插入'siteId'
提前谢谢 物理添加列的唯一(也是非常不推荐的)方法是通过EXT环境修改Liferay core
除此之外,实现您需要的第一个操作是不要使用liferay“站点”,而是使用liferay“门户实例”。。。这有点像不同的Liferay安装:它们都将共享相同的软件基础架构,但逻辑上它们是不同的Liferay安装。
了解更多信息
如果这种方法不适用,第二种方法是使用Expando桥。
通过使用它,您可以将一个“virtual”字段添加到包含相关groupId的“User\”表中
您可以使用serviceutil的公共get()方法来访问expando值。
有两种不同的方式访问Expando值
第一个是执行user.getExpandoBridge().get。。。但它需要一个用户对象。。。因此,在返回列表之前,您应该迭代任何用户
后者是直接使用ExpandoTableLocalService、ExpandoColumnLocalService和ExpandoValueLocalService直接获取包含您的groupId值的所有expando行
…但在这一点上,为什么不直接使用自定义映射表呢
您只需要创建一个包含userId和groupId对的表。。。获取按groupId筛选的所有userId,然后对User_uu表执行动态查询。这不是最好的数据库形式,但您可以实现您的目标
您只需要向portlet添加一个服务层:了解Liferay最强大的功能之一
这是一个干净的方式来达到您的要求。。。但请记住,网站并不是为了这个目的而设计的。。。整个LR许可系统将忽略您以这种方式强制执行的抽象。谢谢您的建议。我想用Expando桥。那么,如何将站点ID与UserLocalServiceUtil.addUser()一起插入。您需要addUser返回的user对象,才能获得expando桥,如我的注释所示。在这种情况下,您可以直接获得对象上的桥,然后添加您需要的值,即一个特定的“(expando)列”。非常抱歉。我是新来的,雷。你能再解释一下吗。或者如果可能的话给我一些参考。提前感谢Google search是最好的起点:它可以建议像或这样的链接,或者很容易找到新的示例(请注意,因为访问expandoBridge的方法在不同的LR版本中更改了签名,但您的行为是相同的)。顺便说一句,我的《生命之光》这本书是最有用的资源之一。