在下面的代码中,学习是一个学习实例,我想保存为http会话
learning = new Learning(learningContext);
HttpSession webSession = request.getSession();
webSession.setAttribute("learning", learning);
Learning learnTest = webSession.getAttribute("learning");
当我运行下面的代码时,我得到:
Incompatible types
Learning learnTest = webSession.getAttribute("learning")
required: Learning
found: Object
我可以将非通用对象保存到会话中吗?还有另一种方法可以达到这个目的吗?
答案 0 :(得分:3)
你需要像这样投射对象 -
Learning learnTest = (Learning) webSession.getAttribute("learning")
您需要转换为特定类型,因为getAttribute的返回类型是Object。
答案 1 :(得分:1)
HttpSession.getAttribute
的javadoc说:
java.lang.Object getAttribute(java.lang.String name) 返回在此会话中使用指定名称绑定的对象,如果名称下没有绑定任何对象,则返回null。
我的意思是 by construction 它总是会返回一个纯粹的对象。如你所知(或希望)你已经放置了Learning
,你只需做一个明确的演员:
Learning learnTest = (Learning) webSession.getAttribute("learning");