why does the validation phase call the managed bean getters?
I've read through the spec and can't find the answer, and it doesn't make sense. You are validating the data in the JSF tree, so why would you care what the managed bean has?
Here's my problem. I implemented my managed bean as a self-populating bean. I initialize all fields by calling a DAO bean inside the constructor. I get an ID parameter from the request that I pass to the DAO. And the scope for my bean is request, which is the key here.
So when I get a new request (with the parameter I expect), everything works fine. Then the user can modify the fields and save. But here comes the problem. Since I'm in request scope, a new bean is instantiated when they save, and since now there's no ID in the request, I get an empty bean. That's still OK, but then the process validation phase hits and it starts calling all my getters. For simple String fields it's fine, but for list boxes it's looking for an array of SelectItem objects, and it has to be of the same size, or I get a validation error.
So is there any way to get around this? Of course I could save the ID, and repopulate the bean from the DB, but the second hit would be for no reason. Using immediate is not an option, as I do want to validate, I just don't want validation to call my managed bean getters. Makes no sense to me why validation would call getters, especially in request scope.

