Скрытые входные данные в JSP возвращаются как нулевые в Java Сервлет - почему? - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь отправить переменную из моего JSP в мой сервлет, используя метод post. Однако значение постоянно возвращает ноль. Я положил в распечатки и другой тип скрытого ввода, чтобы проверить другие ошибки, но это просто, что входы в сервлете нулевые. Почему это так?

JSP: (этот код находится в таблице)

<c:set var="counter" value="0"/>
        <tbody>
            <form id="myForm" action="feedingSchedules" method="post">
                <c:forEach var="schedule" items="${feeding_schedules}">
                <tr>
                    <td><c:out value="${schedule.schedule_ID}" /></td>
                    <td><c:out value="${schedule.feeding_time}" /></td>
                    <td><c:out value="${schedule.recurrence}" /></td>
                    <td><c:out value="${schedule.notes}" /></td>
                    <td><c:out value="${schedule.food}" /></td>
                    <td><c:out value="${schedule.animalID}" /></td>
                    <td><button id="myButton" class="btn-danger-stale" name="btn${counter}" value="val${counter}">Delete Schedule</button></td>
                    <c:set var="counter" value="${counter + 1}"/>
                    <c:out value="${counter }"/>
                </tr>
            </c:forEach>
            <c:out value="${counter }"/>
            <input type="hidden" name="hi" id="hi" value="hi"/>
            <input type="hidden" name="numSchedules" id="numSchedules" value="${counter}"/>
            </form>
        </tbody>
</table>    
    <script type="text/javascript">
        var form = document.getElementById("myForm");

        document.getElementById("myButton").addEventListener("click", function () {
          form.submit();
        });
    </script>

Сервлет: (переменная 'test' равна нулю; код падает при объявлении 'count', потому что parseInt не может разобрать нулевое значение)

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    FeedingScheduleDAO dao = DAOUtilities.getFeedingScheduleDao();
    List<FeedingSchedule> schedules = dao.getAllSchedules();
    //Get Parameters
    System.out.println("got here");
    String test = request.getParameter("hi");
    System.out.println(test);
    int count = Integer.parseInt(request.getParameter("numSchedules"));
    for(int i = 0; i < count; i++) {
        String btn = null;
        btn = request.getParameter("btn" + i);
        if(btn == ("val" + i)) {
            System.out.println("got here");
            // call delete method from DAO
            try {
                dao.deleteSchedule(schedules.get(i));
                request.getSession().setAttribute("message", "Schedule successfully deleted");
                request.getSession().setAttribute("messageClass", "alert-success");
                response.sendRedirect("feedingSchedules");
            } catch (Exception e) {
                e.printStackTrace();
                request.getSession().setAttribute("message", "There was a problem deleting the schedule at this time");
                request.getSession().setAttribute("messageClass", "alert-danger");
                request.getRequestDispatcher("feedingScheduleHome.jsp").forward(request, response);
            }
        }
    }
}

1 Ответ

0 голосов
/ 06 февраля 2020

Вы можете попробовать отладить код, сделав метод form = GET. Это поможет вам узнать значения, которые собираются в Servlet. Затем вы можете просто проверить URL, чтобы увидеть, есть ли данные там или нет. Попробуйте, если вы не видите данные в URL, что означает, что отправка формы не работает должным образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...