You can't. Anything you put in a hidden field must be a String (or at least an object that can be converted to a String). You can't put an ArrayList in a single hidden field.
If I were you, I'd just put this ArrayList in session scope. Then you can retrieve anywhere you need it. As long as you remove it when it's no longer needed, I doubt it would affect performance significantly.
If you insist on doing it the hard way, though, here's one possibility:
If all of the Customer properties are Strings, you could iterate through the ArrayList using <logic:iterate> and create hidden fields with indexed properties for each customer in the list. If you're unfamiliar with indexed properties, the links below will help you understand them: