我正在使用与 tomcat 7.0.27 和 hsql 捆绑在一起的 liferay 6.1.1 CE GA2。
我在 ExpandoValue 上创建了一个挂钩,我想在更新他的自定义字段时为用户分配一个角色。这是我尝试过的:
public class UserTagValueListener implements ModelListener<ExpandoValue>{
@Override
public void onAfterUpdate(ExpandoValue arg0) throws ModelListenerException {
long userId = arg0.getClassPK();
long roleId = (long)1; //could be any role
try {
System.out.println("user roles : " + UserUtil.getRoles(userId));
/* I tried these 4 lines with the same result */
//UserLocalServiceUtil.addRoleUsers(roleId, new long[]{userId});
//RoleLocalServiceUtil.addUserRoles(userId, new long[]{roleId});
//UserUtil.addRole(userId, roleId);
RoleUtil.addUser(roleId, userId);
} catch (PortalException e) {
e.printStackTrace();
} catch (SystemException e) {
e.printStackTrace();
}
System.out.println("user roles : " + UserUtil.getRoles(userId));
}
}
当我在添加 UserRole 的行之前和之后检查角色时,它显示该角色已添加到我当前的用户中。但是一旦执行完成,用户就不再具有角色了。
我究竟做错了什么?