【问题标题】:How to pass the User entity results from action class to view.jsp如何将用户实体结果从操作类传递给 view.jsp
【发布时间】:2015-03-31 18:20:22
【问题描述】:

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

我的动作类代码,

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的任何建议。

提前致谢。

【问题讨论】:

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


    【解决方案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("userList",tempList); 在 Action 类的请求对象中放置 usersList并且用户也以同样的方式计数。现在在 jsp 中只需替换以下行。

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

    不确定您是否还需要在上述行中进行类型转换。

    【讨论】:

    • 如果我设置 actionRequest.setAttribute("userList",usersList);那么我将正确获取所有用户列表但我需要在“if(user.getFacebookId() == 12345 && user.getStatus() == 0) { ..... } 中添加正在打印的用户环形。那么如何添加将出现在 If 循环结果中的用户列表。提前致谢
    • 非常感谢。我有一个最终查询,在我的操作类中是否有任何方法 init 方法,以便在呈现我的第一页之前,我需要将用户列表添加到我的操作请求中。因此,每次渲染我的 view.jsp 时,这个 init 方法都应该调用并在我的 init 方法中设置用户列表。我该怎么做?
    猜你喜欢
    • 2011-10-17
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    • 1970-01-01
    • 2013-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多