Такая же сессия на нескольких вкладках

У меня есть некоторые проблемы здесь, если пользователь открывает несколько вкладок в браузере с тем же сеансом.

  1. Пользователь открыть вкладку 1, перейти к торговле 1001 подробнее
  2. Щелкните правой кнопкой мыши и откройте другую вкладку в том же браузере, перейдите к торговле 1002
  3. Вернитесь на вкладку 1 и измените детали торговли 1001. Вместо этого, детали торговли 1001 будут перезаписаны с товарами 1002.

Я использую WebSphere 8.0. Страница имеет область запроса.

Любые рекомендации относительно того, что было бы хорошим и легким в обслуживании решением для предотвращения этого?

2 ответа

вы сохраняете детали транзакций в сеансе/файлы cookie, которые являются плохими идеями, идентификаторы и т.д. должны передаваться как скрытые поля в форме.


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

С этого момента вы можете использовать два пути, подход без учета состояния, не используя сеансов вообще, загружать все из базы данных, обновлять, сохранять. Безгражданство - это блаженство, если вы можете поддержать его совершенным. Второй подход предполагает, что вы используете идентификатор конкретной вкладки для получения правильной даты со своего сеанса, поэтому, другими словами, ваш идентификатор, специфичный для вашей вкладки, будет частью ключа сеанса.

Более поздний подход означает, что вы включили область разговора, и, поскольку вы упомянули, что используете JSF, есть поддержка для разговоров, проверьте документы для @ConversationScoped. Ключевая строка

Any JSF request has exactly one associated conversation.

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

licensed under cc by-sa 3.0 with attribution.