Как из List (jsp) получить определенный id?

219
31 июля 2018, 22:50

Есть jsp страница, которая показывает несколько квестов. Каждый можно посмотреть и прокомментировать.

<div class="card mb-4 box-shadow">
    <c:forEach items="${quest}" var="quest">
        <c:if test="${fn:containsIgnoreCase(quest.name, 'narnia')}">
            <c:set var="rec" value="${quest.questId}" />
            <img class="card-img-top" src="static/img/gomer1.png" alt="">
            <div class="card-body">
                <p class="card-text"><c:out value="${quest.description}" /></p>
                <div class="d-flex justify-content-between align-items-center">
                    <div class="btn-group">
                        <button type="button" class="btn btn-sm btn-outline-secondary">View</button>
                        <c:if test="${not empty user.email}">
                            <a type="button" class="btn btn-sm btn-outline-secondary" href ="/commentForm" >Add New Comment</a>
                        </c:if>
                    </div>
                    <small class="text-muted"><c:out value="${quest.name}"/></small>
                </div>
            </div>
        </c:if>
    </c:forEach>
</div>

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

public void execute(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException, UserAlreadyExistException {
    HttpSession session = request.getSession();
    List<Quest> quest  = questService.showAllQuests();
    request.getSession().setAttribute("quest", quest);
    for (int i = 0; i< quest.size();i++){
        request.getSession().setAttribute("questId", quest.get(i).getQuestId());
    }
    request.getRequestDispatcher(ConfigurationManager.getProperty("path.page.quest")).forward(request, response);
}

Как сделать, чтобы нажимая на кнопку, чтобы оставить комментарий, запоминался правильный id квеста, чтобы его можно было использовать для комментариев либо просмотра?

Спасибо!

Answer 1

сохранять где-то этот самый id. HTML ни JS не знает про JSTL и JSP. От сервера она получает только HTML.

Вариант следующий. Кнопке в ссылке передать id.

<c:if test="${not empty user.email}">
     <a type="button" class="btn btn-sm btn-outline-secondary" href ="/commentForm?id=<$.user.id}" >Add New Comment</a>
</c:if>

И теперь в запросе ловить этот id как параметр

READ ALSO
Преобразовать Map в Map через stream api

Преобразовать Map в Map через stream api

Есть объект, и есть view для этого объектаЕсть Map<String, List<MyObject>>

179
Возможно ли из одного класса получить картинку из другого класса, а именно из другого layout, относящегося ко второму классу

Возможно ли из одного класса получить картинку из другого класса, а именно из другого layout, относящегося ко второму классу

Мне необходимо из одного класса получить картинку из другого класса, а именно из другого layout, относящегося ко второму классу

155
Настройка Spring Boot OAuth2

Настройка Spring Boot OAuth2

Я хочу сделать следующее приложение: Есть 2 конечные токи API: 1) /hello/user - возвращает строку Hello ${username}, где username имя пользователя 2) /hello/anonymous - возвращает...

229
Загрузка бинарного файла на устройство

Загрузка бинарного файла на устройство

Задача: скачать файл из БД формата mp4 как бинарный файлПроблема: файл скачивается, но всегда в каком-то "урезанном формате"

185