2011-03-02 69 views
1

我使用session.set/getAttribute()将我的HashMap传递给另一个servlet。在我的下一个servlet中,我将为我的HashMap添加一个值,但是当我搜索该值时,无法读取它。为什么它不起作用?与Session的getAttribute和setAttribute方法混淆

我如下设置它:

session.setAttribute("itemList", itemList); 

而且我如下取回:

HashMap itemList = (HashMap)session.getAttribute("itemList"); 
itemList.put(stockNo, item); 
session.setAttribute("itemList", itemList); 

这是正确的吗?

+1

只需检查AddtheEntry servlet是否提供新会话或旧会话。 – Ankit 2011-03-02 05:47:39

+0

@我该如何检查?谢谢 – newbie 2011-03-02 05:49:39

+0

请注意,第二个servlet中的setAttribute调用是不必要的。无论如何,所做的更改都会反映在所引用的对象中。这是Java,而不是PHP或一些非OO语言。 – BalusC 2011-03-02 12:49:24

回答

1
session.setAttribute("itemList", itemList); //is this correct??? 

在上面的声明中,您刚刚将“itemList”(标识符)关联到itemList(object)。这意味着,如果您稍后想要引用此itemList对象,则只需引用“itemList”标识符。

Java API是你的好朋友。你应该很容易理解这一点。

1

session.setAttribute(“itemList”,itemList); //它是否正确? ---这是你设置它的方式

HashMap itemList =(HashMap)session.getAttribute(“hashM”); ---这是你检索它的方式

在这两个地方使用相同的键“itemList”。