I see what you are saying. With
Struts, you write an object's state to a JSP page, throw it over to the browser, then Struts reconstitutes the object and hands it to your action. If you don't put all the fields on the JSP, Struts can't retrieve that information. You have a couple of options:
1. use hidden fields, as you know.
2. put the object in the session and copy the updated values into that object.
3. only consider fields that you have on the JSP page, ignoring fields you know will be null
4. make your class structure reflect that of your JSP page. This is probably the "best" option, since we want our classes to model the real world, and they are less error prone than the previous suggestions. I usually make a class hierarchy with a simple (user name) object for list purposes, a more complex subclass for user purposes (address, phone), then a even more complex subclass for administration purposes (department assignment, mail code). This way, each JSP and action only deal with the fields then are presenting and editing.