Java Liferay 7:获取组织自定义字段时未初始化PermissionChecker
我已经在Liferay 7门户中为组织创建了自定义字段。现在我想获取自定义字段的值并获取PrincipalException-PermissionChecker未初始化:Java Liferay 7:获取组织自定义字段时未初始化PermissionChecker,java,security,exception,liferay-7,expando,Java,Security,Exception,Liferay 7,Expando,我已经在Liferay 7门户中为组织创建了自定义字段。现在我想获取自定义字段的值并获取PrincipalException-PermissionChecker未初始化: Long userId = (Long) req.getSession().getAttribute(WebKeys.USER_ID); List<Organization> mylist = OrganizationLocalServiceUtil.getUserOrganizations(use
Long userId = (Long) req.getSession().getAttribute(WebKeys.USER_ID);
List<Organization> mylist = OrganizationLocalServiceUtil.getUserOrganizations(userId);
if (!mylist.isEmpty()) {
Organization organization = mylist.get(0);
String orgUrl = group.getFriendlyURL();
>>> ExpandoBridge expandoBridge = organization.getExpandoBridge();
System.out.println(expandoBridge.getAttribute("custom_field"));
}
收到同事的答复。现在它开始工作了。 将guest的自定义字段权限设置为true并添加此代码
try {
User user = (User) req.getAttribute(WebKeys.USER);
PrincipalThreadLocal.setName(userId);
PermissionChecker permissionChecker;
permissionChecker = PermissionCheckerFactoryUtil.create(user);
PermissionThreadLocal.setPermissionChecker(permissionChecker);
Organization organization = mylist.get(0);
ExpandoBridge expandoBridge = organization.getExpandoBridge();
System.out.println(expandoBridge.getAttribute("custom_field"));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
我将安全管理器expando bridge=com.liferay.portal.kernel.model.Organization添加到liferay-plugin-package.properties中,但PermissionChecker仍然存在问题
try {
User user = (User) req.getAttribute(WebKeys.USER);
PrincipalThreadLocal.setName(userId);
PermissionChecker permissionChecker;
permissionChecker = PermissionCheckerFactoryUtil.create(user);
PermissionThreadLocal.setPermissionChecker(permissionChecker);
Organization organization = mylist.get(0);
ExpandoBridge expandoBridge = organization.getExpandoBridge();
System.out.println(expandoBridge.getAttribute("custom_field"));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}