SlandShow
@SlandShow
70% of my body is made of movies.

Как мне реализовать передачу Map'ы через сессию?

У меня есть контроллер. В этом контроллере есть (условно говоря) два метода: scheduleByStationsAndDatePersist и confirmBooking.

Теперь подробнее про эти методы. scheduleByStationsAndDatePersist с помощью своей бизнес-логики формирует Map. Эта Map имеет следующую структуру:
Map<ScheduleDTO, List<Schedule>> map = graphService.filter(list); // Map'ка инициализируется


Примерно это хранится в Map'ке:
Mars: [
	Schedule ( id: 71, 2018-10-18 12:00:00 → 2018-10-18 13:00:00, Toksovo →  Kavgolovo, train: Mars ), 
	Schedule ( id: 72, 2018-10-18 13:05:00 → 2018-10-18 14:00:00, Kavgolovo →  Oselki, train: Mars )
      ]

Aqua: [
	Schedule ( id: 73, 2018-10-18 12:10:50 → 2018-10-18 13:10:10, Toksovo →  Kavgolovo, train: Aqua ), 
	Schedule ( id: 74, 2018-10-18 13:25:00 → 2018-10-18 14:10:00, Kavgolovo →  Oselki, train: Aqua )
      ]


Где Mars и Aqua - toString'овское представление болванки ScheduleDTO. Ключ тут и есть эта болванка (я решил просто для наглядности выводить именно название поезда), а значение - список реальных Schedule'ов из базы данных.

В качестве ключа мы имеем болванку ScheduleDTO для отображения во фронте, а в качестве значения - список составных Schedule'ов.

Затем я формирую обычный список в scheduleByStationsAndDatePersist (я беру значения по ключу и склеиваю все расписания в одно DTO) и отправляю его в JSP.

Итак, второй метод контроллера confirmBooking должен делать следующее: когда юзер выбрал интересующее его расписание и кликнул на ссылку (в JSP есть список всех собранных расписаний), то я должен сделать что-то, чтобы можно было вытащить из этой самой Map'ки все склеенные расписания (которые я нарочно собрал в одну "болванку"). Причём, допустим, если юзерь выбрал болванку с первым рейсом (где поезд - Mars), то меня интересует конкретно этот список Schedule'ов (который я могу получить по ключу).

И у меня такой вопрос: как лучше это сделать? Использовать сессию? Или есть альтернатива?

Вот примерный заготовок этого метода:
@RequestMapping(value = "/viewTicketsTrainInfo")
    public String confirmBooking(Model model) {
...
}
  • Вопрос задан
  • 113 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы