获取liferay中的用户列表

Get list of users in liferay

我想在 liferay 上显示用户列表。我遇到了问题。 这是我的操作 class.

public void userList(ActionRequest actionRequest, ActionResponse actionResponse) throws SystemException {
    // Todo Logic for user code
    try {
        int countUser = UserLocalServiceUtil.getUsersCount();
        log.info("User Present In DB" + countUser);
        List < User > users = UserLocalServiceUtil.getUsers(0, countUser);
        PortletSession sessions = actionRequest.getPortletSession();
        sessions.setAttribute("users", users);
        log.info("Session set from My Portlet" + sessions.getAttribute("users"));
        for (User user: users) {
            if (user != null) {
                log.info("UserID--:" + user.getUserId() + "UserCompanyID-:" + user.getCompanyId() + "UserEmail-:" + user.getEmailAddress() +
                    "UserScreenName--:" + user.getScreenName());
            }
        }

以及我如何尝试获取 jsp 上的用户列表。

<%@page import="com.test.UserList.userList"%>
<%@page import="java.util.ArrayList"%>
<%@page import="com.liferay.portal.model.User"%>
<%@page import="java.util.List"%>
<%@page import="javax.portlet.PortletSession"%>
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%@taglib uri="http://alloy.liferay.com/tld/aui" prefix="aui" %>

<portlet:defineObjects />
<%
     PortletSession session2 = renderRequest.getPortletSession();
     ArrayList<User> users = (ArrayList) session2.getAttribute("users");

     if(users!=null){
%>
    <b>Name: </b><%=users.get(users) %>
<%} %>

我得到的值为空 我想显示列表中的所有用户名

您将用户列表放入会话的逻辑没有问题,该列表正在准确填充并在会话中设置。 然而,在 JSP 上,有几个问题:

  1. renderRequest 未定义。
  2. 用户列表的转换异常(UnmodifiableList cannot be cast to java.util.ArrayList)。
  3. 您没有正确迭代列表和获取用户对象。

因此,您需要在 JSP 上执行以下操作:

<%@page import="java.util.ArrayList"%>
<%@page import="javax.portlet.RenderRequest"%>
<%@page import="com.liferay.portal.model.User"%>
<%@page import="javax.portlet.PortletSession"%>

<%
    RenderRequest renderRequest = 
        (RenderRequest) request.getAttribute("javax.portlet.request");
    PortletSession session = renderRequest.getPortletSession();
    List<User> users = (List<User>) session.getAttribute("users");

    if(users != null){
        for(User user : users){
%>
            <b>Name: </b><%=user.getLastName() + ", " + user.getFirstName() %><br />
        <%}
    }%> 

(测试代码)

获取所有用户列表的另一个选项是

UserLocalServiceUtil.getUsers(QueryUtil.ALL_POS, QueryUtil.ALL_POS);

然后迭代它以获取每个用户。