2015-06-10 56 views
0

我想在liferay上顯示用戶列表。我有問題。 這是我的行動課。獲取liferay中的用戶列表

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) %> 
<%} %> 

和我得到的值爲null 我想在列表中顯示的所有用戶名

+1

使用會話而不是設置屬性的請求背後的任何特殊原因? –

+0

@LuckyBoy不會有任何特殊的原因。 – Akash

+0

如果是這樣,那麼你可以使用request.setAttribute()來設置值並在稍後在jsp中進行檢索。 –

回答

1

有與投入會話的用戶列表你的邏輯沒有問題,該清單也越來越人口稠密並準確地設置會話。 但是,在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 /> 
     <%} 
    }%> 

(測試的代碼)

2

另一種選擇來獲得所有用戶的列表

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

然後迭代它來獲取每個用戶。