HttpSession session=request.getSession();
SB st=(SB)session.getAttribute("stu");
st.setM(request.getParameter("m"));
session.removeAttribute("stu");代码作用是先通过session中属性stu(即一个SB对象,里面定义了valueUnbound方法)的setM方法更新这个属性,在属性通过removeAttribute方法激活属性的valueUnbound方法更新数据源。
问题是这里:
SB st=(SB)session.getAttribute("stu");
st.setM(request.getParameter("m"));
是把stu属性赋值给一个新的SB对象st,再用st的setM方法更新,这样的话应该只是对象st用setM方法更新了,而会话属性stu并没有更新到,stu更新数据源时也应该没有变化才对,而事实上st的setM方法却作用到stu属性上了,为什么呢?
我觉得正确的代码应该是:
((SB)session.getAttribute("stu")).setM(request.getParameter("m"));
不是这样才会真正作用于属性stu上么??
SB st=(SB)session.getAttribute("stu");
st.setM(request.getParameter("m"));
session.removeAttribute("stu");代码作用是先通过session中属性stu(即一个SB对象,里面定义了valueUnbound方法)的setM方法更新这个属性,在属性通过removeAttribute方法激活属性的valueUnbound方法更新数据源。
问题是这里:
SB st=(SB)session.getAttribute("stu");
st.setM(request.getParameter("m"));
是把stu属性赋值给一个新的SB对象st,再用st的setM方法更新,这样的话应该只是对象st用setM方法更新了,而会话属性stu并没有更新到,stu更新数据源时也应该没有变化才对,而事实上st的setM方法却作用到stu属性上了,为什么呢?
我觉得正确的代码应该是:
((SB)session.getAttribute("stu")).setM(request.getParameter("m"));
不是这样才会真正作用于属性stu上么??
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货