JSP c: forEach не дает никакого вывода - PullRequest
0 голосов
/ 11 февраля 2019

Я экспериментирую с некоторыми списками JSP и Java.

Проблема, с которой я столкнулся, заключается в том, что цикл c:forEach в JSP не перемещается по списку.

Вот JSP:

<%@page contentType="text/html" pageEncoding="UTF-8" import="model.UserBean" import="java.util.List" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">        
        <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/resources/newcss.css">

        <title>Admin - Manage Users</title>
    </head>
    <body>
         <% UserBean currentUser = (UserBean) (session.getAttribute("currentSessionUser")); %>
         <% List<UserBean> uList = (List<UserBean>) (session.getAttribute("userList")); %>
        <div class="grid-container-title">
            <div class="grid-item-title"><img src="${pageContext.request.contextPath}/resources/logo.svg" width="150" height="150" class="d-inline-block align-top" alt="logo"></div>
            <div class="grid-item-title"><h1>Resource Portal - Manage Users</h1></div>
        </div>
        <h1>This is the Mage User Page</h1>
        <p> Welcome <%= currentUser.getuName()%></p>
        <div class="grid-container4">
            <div class="grid-item4l"> ID</div>
            <div class="grid-item4l"> Name </div>
            <div class="grid-item4l"> Email </div>
            <div class="grid-item4l"> Role / Status </div>
    <c:forEach items="${uList}" var="theuser"> 

            <div class="grid-item4"> ${theuser.uID} </div>
            <div class="grid-item4"> ${theuser.uName} </div>
            <div class="grid-item4"> ${theuser.uEmail} </div>
            <div class="grid-item4"> ${theuser.uRole} / ${theuser.uStatus} </div>


    </c:forEach> 
        </div>
    </body>
</html>

Когда я запускаю вышеупомянутое в Debug (Netbeans), я вижу, что у uList объектов есть ожидаемое число объектов UserBean в списке.

Отладка также показывает, что послестрока <c:foreach пропускает цикл полностью.

Сначала я использовал методы получения, чтобы получить значения каждого элемента списка, например:

        <div class="grid-item4"> ${theuser.getuID()} </div>

Но это тоже не сработало.

ListUsersSvlt имеет следующее для заполнения списка, что является работой (подтверждено отладкой, а также тестом JUnit):

protected void pr0ocessRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    UserDAO um = new UserDAO();

    List<UserBean> ubl = null;

    ubl = um.getAllUsers();

    response.setContentType("text/html;charset=UTF-8");
    HttpSession session = request.getSession(true);
    session.setAttribute("userList", ubl);
    response.sendRedirect("manageUsers/listUsers.jsp");
}

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Изменение JSP для использования Java, а не сработавших тегов, т.е. изменило это:

<c:forEach items="${uList}" var="theuser"> 

        <div class="grid-item4"> ${theuser.uID} </div>
        <div class="grid-item4"> ${theuser.uName} </div>
        <div class="grid-item4"> ${theuser.uEmail} </div>
        <div class="grid-item4"> ${theuser.uRole} / ${theuser.uStatus} </div>


</c:forEach> 

На это:

        <% for ( UserBean theUser : uList )
        {
            %>
        <div class="grid-item4"> <%= theUser.getuID() %> </div>
        <div class="grid-item4"> <%= theUser.getuName() %> </div>
        <div class="grid-item4"> <%= theUser.getuEmail() %> </div>
        <div class="grid-item4"> <%= theUser.getuRole() %> / <%= theUser.getuStatus() %> </div>

        <%
        }
        %>
0 голосов
/ 13 февраля 2019

просто измените код сервлета, как показано ниже:

protected void pr0ocessRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    UserDAO um = new UserDAO();

    List<UserBean> ubl = null;

    ubl = um.getAllUsers();

   request.setAttribute("userList", ubl);
   request.getRequestDispatcher("manageUsers/listUsers.jsp").forward(request, response);
}

надеюсь, что он будет служить вашим целям:)

...