使用C:forEach迭代两个变量

时间:2015-03-12 17:02:19

标签: jsp servlets

我使用request.setAttribute()方法发送两个属性,这两个属性都是列表,一个是用户名,另一个是相应的全名。我使用EL语法接收它们。 Servlet代码

            stmt = currentCon.createStatement();

            rs = stmt.executeQuery(searchUserQuery);

            List<String> fullNameList = new ArrayList<String>();
            List<String> userNameList = new ArrayList<String>();

            while (rs.next()) {
                fullNameList.add(rs.getString("firstname") + " " +  rs.getString("lastname"));
                userNameList.add(rs.getString("username"));
            }

            request.setAttribute("fullNameList", fullNameList);
            request.setAttribute("userNameList", userNameList);

            response.setContentType("text/html");
            response.setCharacterEncoding("UTF-8");
            //response.getWriter().write(fullNameList);


            RequestDispatcher requestDispatcher = request.getRequestDispatcher("searchResults");
            requestDispatcher.forward(request, response);

以下是我的jsp

代码的一部分
<c:forEach var="list" items="${fullNameList}">
                                <c:set var="username" value="${userNameList}" />
                                <li class="list-group-item title"><a href="${pageContext.request.contextPath}/UserProfile?username=${username}"><strong>${list}</strong></a></li>
                        </c:forEach>

我需要检索一个var&#39;用户名&#39;这对应于单个列表&#39;变量。所以我认为我需要每次迭代并得到两个变量&#39; list&#39;和&#39;用户名&#39;。我用c:设置coz我没有如何完成我所需要的。

请帮忙。对不起任何困惑。

1 个答案:

答案 0 :(得分:0)

而不是使用两个List<String>只创建一个List<User>,其中User是一个包含firstNamelastNameuserName的简单POJO类。

例如:

POJO:

public class User {
     private String firstName, lastName, userName;
     // getter & setter
}

的Servlet

List<User> users = new ArrayList<User>();
// populate users
request.setAttribute("users", users);

JSP:

<c:forEach var="user" items=${users}>
    <li><a href="${pageContext.request.contextPath}/UserProfile?username=${user.userName}"><strong>${user.firstName} ${user.lastName}</strong></a></li>
</c:forEach>