Цикл по массиву объектов и использование c: if jstl в JSP - PullRequest
0 голосов
/ 26 сентября 2019

В настоящее время я работаю над небольшим проектом веб-приложения.На главной странице есть ссылка, которая после нажатия вызывает сервлет, который извлекает данные из базы данных (в виде массива объектов), добавляет массив в сеанс (как клиенты) и перенаправляет в jsp, где объекты (клиенты)отображаются в таблице.Есть столбец «больше подробностей», в котором в каждой строке есть кнопка, которая отправляет форму другому jsp, со скрытым входным значением с customerNumber в качестве значения и num в качестве имени.

Я хочу, чтобы ввторой jsp, чтобы перебрать всех клиентов и отобразить только того, чей customerNumber соответствует номеру, отправленному с первого jsp.

Текущий код:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<% String hidden = request.getParameter("num"); %>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Customer Details Page</title>
    </head>
    <body>
        <div>
            <c:forEach var="c" items="${customers}">
                <c:if test = "${hidden == c.customerNumber}">
                    <table>
                        <thead>
                            <tr>
                                <th>Customer Phone</th><th>Customer Country</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td>${c.phone}</td><td>${c.country}</td>
                            </tr>
                        </tbody>
                    </table>
                </c:if>
            </c:forEach>
        </div>   
    </body>
</html>

Приведенный выше код печатает только заголовок таблицы,Любая помощь приветствуется.

Ответы [ 2 ]

1 голос
/ 27 сентября 2019

Нашел проблему, пытался получить доступ к переменной из скрипта непосредственно из тегов jstl.Следующий код работает нормально:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<% 
    String hidden = request.getParameter("num");
    pageContext.setAttribute("reqNum",hidden);
%>

<!DOCTYPE html>
<html>

    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Customer Details Page</title>
    </head>
    <body>
        <div>
            <c:forEach var="c" items="${customers}">
                <c:if test = "${reqNum == c.customerNumber}">
                    <table border="1">
                        <thead>
                            <tr>
                                <th>Customer Phone</th><th>Customer Country</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td><c:out value="${c.phone}" /></td><td><c:out value="${c.country}" /></td>
                            </tr>
                        </tbody>
                    </table>
                </c:if>
            </c:forEach>
        </div>   
    </body>
</html>
0 голосов
/ 26 сентября 2019

Вместо использования

<td>${c.phone}</td><td>${c.country}</td>

Вы можете попробовать:

<td><c:out value="${c.phone}" /></td><td><c:out value="${c.country}" /></td>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...