i am using Person class as a attribute class for the sessions i am adding this as session.setAttribute("person", objPerson1);
i am replacing this attribute with another instance of Person like this session.setAttribute("person", objPerson2);
so in this case attributeReplaced() is called on calling getValue() of HttpSessionBindingEvent class i am getting old value.
but when Person class implements HttpSessionBindingListner, getValue() inside attributeReplaced() is returing new value.
this is really confusing for me, as this is no where stated in the documentation
posted 10 years ago
From Mikalai Zaikin's study guide (and I think that he gets it from the spec).
Events of the following type are either sent to an object that implements HttpSessionBindingListener when it is bound or unbound from a session, or to a HttpSessionAttributeListener that has been configured in the deployment descriptor when any attribute is bound, unbound or replaced in a session. The session binds the object by a call to HttpSession.setAttribute and unbinds the object by a call to HttpSession.removeAttribute. The getValue function returns the value of the attribute that has been added, removed or replaced. If the attribute was added (or bound), this is the value of the attribute. If the attribute was removed (or unbound), this is the value of the removed attribute. If the attribute was replaced, this is the OLD value of the attribute.