Как начать новый сеанс, если пользователь нажимает на новую вкладку в IE или mozilla на портале websphere? - PullRequest
0 голосов
/ 08 июня 2010

У меня есть один портлет «пользовательский поиск» на домашней странице одного приложения, работающего на сервере портала Websphere, который отображает соответствующие пользовательские записи в соответствии с критериями поиска, заполненными в форме поиска.У меня есть требование, чтобы на странице результатов была ссылка «Вернуться к поиску», которая при клике должна показывать заполненную форму на входе jsp.

Проблема, с которой я сталкиваюсь, - это если я открою приложение в двухразличные вкладки одного и того же браузера IE и начать давать некоторые критерии поиска и отправить и одновременно искать другие входные данные из другой вкладки IE (в том же браузере), а затем вернуться на предыдущую вкладку и нажать «вернуться к поиску ввода»ссылка, вместо того, чтобы показывать мне первый ввод, она покажет мне ввод, который я ввел на следующей вкладке IE.

Я устанавливаю и получаю bean-компонент (form bean) через сеанс портлета.Но на двух вкладках diff одного и того же IE это будет один и тот же пользовательский сеанс (и может быть один и тот же сеанс портлета.)

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


Единственное, на что следует обратить внимание, это то, что я могу получить доступ к этому приложению «пользовательского поиска» без входа в систему. Поэтому в этом случае он должен использовать сеанс портлета по умолчанию.Что произойдет, когда я войду в систему, а затем выполню поиск;перезапишет ли сеанс портлета и сеанс http?

Ответы [ 2 ]

3 голосов
/ 08 июня 2010

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

В качестве альтернативы вы можете сэкономить память сервера, разместив поиск в виде строки запроса на ссылку возврата к поиску, а не сохраняя ее в сеансе.

0 голосов
/ 08 июня 2010

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

Некоторые веб-фреймворки поддерживают эту концепцию, некоторые нет. Спецификация портлета не поддерживает это "из коробки" (возможно, в веб-сфере есть что-то конкретное).

Я думаю, что один из способов воссоздать поддержку разговоров - это сохранить идентификатор разговора в сгенерированном HTML. Таким образом, вы можете иметь идентификатор для каждой вкладки / окна. Если вдруг запрос получает старый идентификатор, вы знаете, что он поступает либо со старой страницы (если пользователь использовал кнопку назад), либо с другой вкладки.

Это только грубый набросок. Я почти уверен, что в Интернете есть хорошие ресурсы по этой проблеме, иначе возникнет другой вопрос.

...