Два списка на jsp

220
31 января 2018, 14:01

Задача примерно такая: На сервере есть два списка. Список учеников и список дневников. Каждый дневник принадлежит ученику в единственном экземпляре. И у дневника есть поле по которому определяется эта принадлежность (id ученика).

Как мне отобразить информацию об ученике и о его дневнике на jsp странице. По отдельности можно отобразить через forEach, а как сделать это вместе не знаю

Answer 1

Не очень понятно, что именно нужно - отобразить данные об одном ученике и его дневнике, или это надо сделать для всех учеников? Предполагаю, что второй вариант. Тогда можно так: Сервлет

    public void doGet(HttpServletRequest request, HttpServletResponse response) {
        List<Student> students = studentDao.getAll();
        List<Diary> diaries = diaryDao.getAll();
        //Трансформируем лист дневников в мапу, где ключ - айдишник ученика,
        //а значение - его дневник
        Map<Integer, Diary> diaryMap = diaries.stream().collect(
            Collectors.toMap(Diary::getStudentId, diary -> diary);
        );
        request.setAttribute("students", students);
        request.setAttribute("diaryMap", diaryMap);
       getServletContext().getRequestDispatcher("/view.jsp").forward(request, response);
    }

теперь на view.jsp:

<c:forEach items="${students}" var="student">
    //выдёргиваем дневник из мапы по айдишнику ученика
    <c:set var="diary" value = "${diaryMap[student.id]}"/>
    //делайте теперь со student-ом и diary что хотите
    <p>Ученик: ${student.firstName} ${student.lastName}</p>
    <p>Средний балл: ${diary.averageMark}</p>
</c:forEach>

Оговорюсь, что код не тестировал, не уверен, что в jstl и EL не накосячил, давно не использовал...

READ ALSO
Ширина Label зависима от ширины панели

Ширина Label зависима от ширины панели

как ширину Label'а изменять в зависимости от ширины панели? Менеджер не установлен никакой на панели

192
java.lang.NoClassDefFoundError: javax.mail.internet.MimeMessage

java.lang.NoClassDefFoundError: javax.mail.internet.MimeMessage

Я использую библиотеку javaxmail для отправки сообщений из под моего аккаунта с телефона Android на электронную почту:

231
Изменение траектории анимации в JavaFX

Изменение траектории анимации в JavaFX

Можно ли изменить траекторию анимацию в TimeLine не создавая новый TimeLine?

192
Как сохранить созданный AudioTrack?

Как сохранить созданный AudioTrack?

Запускаю в потоке класс для генерации:

196