【问题标题】:not getting hashtable value from session on other jsp没有从其他jsp的会话中获取哈希表值
【发布时间】:2014-06-21 04:26:52
【问题描述】:

我在会话中设置哈希表的值

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();

【问题讨论】:

  • 能否添加这两个页面收到的请求的标头。我想看看这两个页面是否接收到相同的 JSESSIONID cookie。
  • 为什么会有这种铸造差异:Hashtable&lt;Integer,String&gt; navchk = (Hashtable)session.getAttribute("hash");Hashtable&lt;Integer,String&gt; chk1 = **(Hashtable&lt;Integer,String&gt;) **session.getAttribute("hash");
  • 你有任何异常吗?请提供更多信息。

标签: java jsp session hashtable


【解决方案1】:

一方面,你正在做,

chk.clear();

在您的第一页。这将从HashTable 中清除您的所有密钥。 请记住,您从会话中得到的是对对象chk 的引用,该对象绑定到键“哈希”。 如果您从该对象中清除键,您将不会在第二页中检索任何键。

这有意义吗? :)

【讨论】:

  • 如果我不清除 chk,那么它会在每个循环中添加更多元素。我想在会话中复制 chk 然后发送。他们有什么办法吗?
  • @aarav 添加更多元素是什么意思?如果要在会话中复制其值,则不应清除它。或者您可以在调用 clear 之前克隆对象,然后在会话中设置克隆的对象。
  • 嘿 :) .. 我正在做一个关于“在线测试”的小项目。有“chk”(哈希表),我在其中复制问题编号。现在我正在尝试使用会话对象“hash”将此 chk 传递给另一个 jsp。我按类别提取问题。一旦我运行该项目..完全没有问题。但是当我返回并选择另一个类别时,新值会添加到 chk 以及旧值中。但如果我最后清除 chk,那么它可以正常工作,但会话问题。希望你明白我想说什么或问什么。
猜你喜欢
  • 2013-04-04
  • 2013-12-11
  • 1970-01-01
  • 1970-01-01
  • 2016-07-22
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多