0

在 liferay 中,我正在尝试使用 API 访问数据库中可用的角色数据。

我正在使用 com.liferay.portal.service.RoleLocalServiceUtil 类来访问角色。下面是我的代码:

Role role = RoleLocalServiceUtil.getRole(10138);
ans = ans+role.getName()+","+role.getRoleId();

数据库中存在 ID 为 10138 的角色。

但是上面抛出了以下异常: com.liferay.portal.kernel.bean.BeanLocatorException: BeanLocator has not been set com.liferay.portal.kernel.bean.PortalBeanLocatorUtil.locate(PortalBeanLocatorUtil.java:33) com.liferay.portal .service.RoleLocalServiceUtil.getService(RoleLocalServiceUtil.java:446) com.liferay.portal.service.RoleLocalServiceUtil.getRole(RoleLocalServiceUtil.java:166) com.bl.retail.controller.KPIController.changeAccess(KPIController.java:70) sun .reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) ..........

如何设置 BeanLocator?我花了这么多愚蠢的时间,请帮助!

PS:上面的代码来自运行在同一个liferay服务器上的一个单独的servlet。

4

2 回答 2

1


ClassLoader classLoader = (ClassLoader)PortletBeanLocatorUtil.locate(ClpSerializer.SERVLET_CONTEXT_NAME,"portletClassLoader");
在调用 getter 之前尝试添加。见http://www.liferay.com/zh/community/forums/-/message_boards/message/13302979http://liferay-blogging.blogspot.de/2011/03/dynamicquery-api-and-classloaders-in .html供参考。

希望对你有帮助,问候

于 2012-10-11T12:53:13.420 回答
0

回答我自己的问题:

这是因为角色数据访问是从另一个 Servlet 完成的。

当我在 portlet 中使用相同的代码时,它工作得很好。

于 2012-10-16T08:23:49.930 回答