如何将User实体结果从action类传递给view.jsp

时间:2015-03-31 05:35:30

标签: jstl liferay hook liferay-6 liferay-aui

我创建了一个portlet,我根据动作类中的某些条件获取过滤列表的用户详细信息。现在我如何将结果(用户列表)从我的动作类传递给view.jsp?

我的Action类代码,

public void addEntry(ActionRequest request, ActionResponse response) throws PortalException, SystemException
{
int usersCount = UserLocalServiceUtil.getUsersCount();
            List<User> usersList = UserLocalServiceUtil.getUsers(0 , usersCount);
            System.out.println("List Size is ===>"+ usersList);
            if (usersList != null) {
            for (User user : usersList) {  
                            if(user.getFacebookId() == 12345 && user.getStatus() == 0)
                            {
                                    System.out.println(((Long) user.getUserId()).toString()+ "," + user.getFullName()+ "," + user.getFirstName()+ "," + user.getLastName()+ "," + user.getScreenName());

                            }
                }
            }

}

在我的动作类中,我根据FacebookID和用户状态过滤列表。它正在打印所需的用户列表。现在如何将过滤后的用户列表发送到我的视图页面。

查看页面代码,

<liferay-ui:search-container delta="10" emptyResultsMessage="no-users-were-found">
        <liferay-ui:search-container-results
                results="<%=UserLocalServiceUtil.getUsers(searchContainer.getStart(), searchContainer.getEnd())%>"
       total="<%=UserLocalServiceUtil.getUsersCount()%>" />


        <liferay-ui:search-container-row
                className="com.liferay.portal.model.User"
                keyProperty="userId"
                modelVar="user"
        >
                <liferay-ui:search-container-column-text
                        name="name"
                        value="<%= user.getFullName() %>"
                />

                <liferay-ui:search-container-column-text
                        name="first-name"
                        property="firstName"
                />
                <liferay-ui:search-container-column-text
                        name="last-name"
                        property="lastName"
                />
                <liferay-ui:search-container-column-text
                        name="screen-name"
                        property="screenName"
                />
        </liferay-ui:search-container-row>

        <liferay-ui:search-iterator />

</liferay-ui:search-container>

<liferay-ui:search-container delta="10" emptyResultsMessage="no-users-were-found" />

有关如何将操作类中的过滤器列表传递给liferay-ui:search-container-results的任何建议。

提前致谢。

1 个答案:

答案 0 :(得分:1)

    List<User> tempList = new ArrayList<User>();
    for (User user : usersList) {  
                                if(user.getFacebookId() == 12345 && user.getStatus() == 0)
                                {
                                  tempList.add(user);                                        
                                  System.out.println(((Long) user.getUserId()).toString()+ "," + user.getFullName()+ "," + user.getFirstName()+ "," + user.getLastName()+ "," + user.getScreenName());

                                }
     }
      actionRequest.setAttribute("userList",tempList);          

使用actionRequest.setAttribute(&#34; userList&#34;,tempList)将ActionList中的usersList放入Action对象中;并且用户也以相同的方式计数。现在在jsp中只需替换以下行。

results="<%=request.getAttribute("userList")%>"
   total="<%=request.getAttribute("count")%>

不确定在上面的行中也可能需要某种类型的转换。