This issue (for me) opens "Pandora's Box" since the different solutions can enter into areas that are discussed in the
struts development groups as good or bad depending on which camp you sit in.
1) Turn validate to false and call validate from your action directly. If the validation fails, then requery and place the list in request scope or back on the form.
2) Define a getXYZList method on your form and invoke a business object to return the list. Then it doesn't matter if validate is true or false AND nobody has to remember to put it back in the request or on the form. This approach is hotly debated and there doesn't appear to be a clear leader. The issue stems from whether you think the form is part of the Model, part of the Controller, or part of the View.
3) Carry the list contents in one or more hidden fields and repopulate the list on the post just in case validation fails.
I tend to use approach 2. It just seems cleaner in that nobody has to remember anything. I view the form as part of the model and I haven't been convinced (in cases like this) that it's wrong to let this model component proxy the REAL model by providing a method to get at data. Your mileage may vary.