не получает значение хеш-таблицы из сеанса на другом jsp

#java #jsp #session #hashtable

#java #jsp #сессия #хеш — таблица

Вопрос:

Я устанавливаю значение хэш-таблицы в сеансе

 session.setAttribute("hash",chk); 
Hashtable<Integer,String> navchk = (Hashtable)session.getAttribute("hash");
Enumeration items = navchk.keys();
while(items.hasMoreElements())
{
    out.println(items.nextElement());
}
chk.clear();
 

на конкретной странице он печатает значения. здесь chk — это хэш-таблица.

на другой странице, когда я получаю и печатаю значения, это не работает. Вот код второй страницы….

 Hashtable<Integer,String> chk1 = (Hashtable<Integer,String>)session.getAttribute("hash");

Enumeration items = chk1.keys();
while(items.hasMoreElements())
{
    out.println(items.nextElement());
}
chk1.clear();
 

Комментарии:

1. Не могли бы вы добавить заголовки запроса, полученного этими двумя страницами. Я хотел бы посмотреть, получают ли эти две страницы один и тот же файл cookie JSESSIONID.

2. Почему эта разница в приведении: Hashtable<Integer,String> navchk = (Hashtable)session.getAttribute("hash"); и Hashtable<Integer,String> chk1 = **(Hashtable<Integer,String>) **session.getAttribute("hash");

3. Получаете ли вы какое-либо исключение? Пожалуйста, предоставьте дополнительную информацию.

Ответ №1:

Ну, во-первых, вы делаете,

chk.clear();

на вашей первой странице. Это очистит все ваши ключи от этого HashTable . Имейте в виду, что вы получаете от сеанса, это ссылка на объект chk , ограниченный ключом ‘hash’. Если вы очистите ключи от этого объекта, вы не получите никаких ключей на второй странице.

Имеет ли это смысл? 🙂

Комментарии:

1. если я не очищу chk, то он добавит больше элементов в каждом цикле. я хочу скопировать chk в сеанс, а затем отправить. Есть ли у них какой-либо способ сделать это?

2. @aarav Что вы имеете в виду, говоря, что это добавляет больше элементов? Если вы хотите скопировать в сеансе его значения, вы должны не очищать его. Или вы можете клонировать объект перед вызовом clear, а затем установить клонированный объект в сеансе.

3. Привет 🙂 .. я делаю небольшой проект по «онлайн-тестированию». существует «chk» (хеш-таблица), в которую я копирую номер вопроса. теперь я пытаюсь передать этот chk другому jsp, используя объект сеанса «hash». я выбираю вопросы по категориям. как только я запускаю project..no проблема вообще. но когда я возвращаюсь и выбираю другую категорию, в chk добавляются новые значения, а также старые. но если я очищу chk в конце, тогда он будет работать правильно, но проблема с сеансом. Надеюсь, вы понимаете, что я пытаюсь сказать или спросить.