0

我想获取 liferay 中所有用户的电子邮件地址...
我使用了以下代码..

DynamicQuery dynamicQuery = UserLocalServiceUtil.dynamicQuery();
dynamicQuery.add(RestrictionsFactoryUtil.isNotNull("emailAddress"));
int startOfList = 0;
int endOfList = 100;
List<User> articles = (List<User>) UserLocalServiceUtil.dynamicQuery(dynamicQuery, startOfList, endOfList);

有人可以告诉我我在哪里做错了。

我正进入(状态:

  1. java.lang.InstantiationException
  2. com.liferay.portal.kernel.deploy.hot.HotDeployException: Error registering portlets for ControlPanelPortlet-portlet.

ControlPanelPortlet 是我的 portlet 的名称。

4

2 回答 2

2

如果您只想获取所有用户的电子邮件地址列表,则可以使用以下代码:

DynamicQuery dynamicQuery = UserLocalServiceUtil.dynamicQuery();

dynamicQuery.add(RestrictionsFactoryUtil.isNotNull("emailAddress"));

// this is the statement which would cause to return only a list of emails
dynamicQuery.setProjection(ProjectionFactoryUtil.property("emailAddress"));

int startOfList = QueryUtil.ALL_POS;

int endOfList = QueryUtil.ALL_POS; // this will fetch all the Users

// note: it returns a list of String
List<String> emailAddresses = (List<String>) UserLocalServiceUtil.dynamicQuery(dynamicQuery, startOfList, endOfList);

如果你想获取Users 那么你的代码就可以了,只需要更改startOfListandendOfList字段:

DynamicQuery dynamicQuery = UserLocalServiceUtil.dynamicQuery();

dynamicQuery.add(RestrictionsFactoryUtil.isNotNull("emailAddress"));

int startOfList = QueryUtil.ALL_POS;

int endOfList = QueryUtil.ALL_POS;

List<User> users = (List<User>) UserLocalServiceUtil.dynamicQuery(dynamicQuery, startOfList, endOfList);

或者如果您不想检查任何条件并想获取Users 那么只需使用:

List<User> users = UserLocalServiceUtil.getUsers(startOfList, endOfList);

关于您看到的异常,它们与您发布的代码无关。这些可能是由于 Java 类或 JSP 中的一些其他代码造成的。如果您放置完整的堆栈跟踪,那么我们可以提供帮助。

于 2013-05-03T12:41:20.793 回答
1

试试这个代码..

List<User> users = UserLocalServiceUtil.getUsers(0, UserLocalServiceUtil.getUsersCount());

for(User user : users) {
     System.out.println(user.getEmailAddress());
}

让我知道您是否有问题

于 2013-05-03T06:39:34.840 回答