使用 C:forEach 遍历两个变量

Using C:forEach to iterate over two variables

我正在使用 request.setAttribute() 方法发送两个属性,它们都是列表,一个带有用户名,一个带有相应的全名。我使用 EL 语法接收它们。 小服务代码

            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>

我需要检索与单个 'list' 变量相对应的单个变量 'username'。所以我认为我需要每次迭代并获得两个变量 'list' 和 'username'。我使用 c:set 因为我不知道如何完成我需要的。

请帮忙。抱歉造成任何混乱。

与其使用两个 List<String>,不如只创建一个 List<User>,其中 User 是一个简单的 POJO class,具有 firstNamelastNameuserName.

例如:

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>