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 を追加する行の前後のロールを確認すると、現在のユーザーにロールが追加されていることがわかります。ただし、実行が完了すると、ユーザーは役割を失います。
私は何を間違っていますか?