The JSF has most of the work, like validations, done at the server end which, pretty much, affects performance. JSF needs additional support to turn it into client side validations. I think struts is here to stay, mainly because of the large community that supports struts.
I'd also add the two are not mutually exclusive. JSF's sweet spot is its server-side UI component framework, and I'd say Struts' sweet spot is its MVC controller. With the Struts 2 JSF plugin, you can use Struts 2 to handle the request process, even use Struts 2 actions, but then hand off to JSF to render the HTML to the browser. Spring is creating a JSF integration library for Spring MVC that takes a similar approach.