In my experience, the single most difficult challenge comes from understanding that in Struts, there is a single form bean that has its values pushed into it auto matically, whereas in JSF, the values can be pushed all over the place to a variety of different destinations.
I am forced to work enjoy working with a Struts legacy application at my company and you can't imagine how creative some people are when i comes to hide push the user's input values somewhere
Luckily this would make a migration to JSF very easy. Struts = values pushed to a variety of different destinations. JSF = values pushed to a variety of different destinations. Almost nothing to change