I find this problem in Spring 3.1. I have two objects: A is in session scope and B is in request scope. Both A and B have attributes with the same name. For example, both A and B have an attribute called firstName. There is a <form:form path="firstName"> in the web page whose modelAttribute is B. When the page is submitted, both A.setFirstName(String firstName) and B.setFirstName(String firstName) is called. So the same value is set to both A.firstName and B.firstName. If I change A's firstName to a different name, this problem won't happen.