Better in what sense? Speed of development? Security? Good looking User Interface?
as it provides a rich set of jsf library which is easy to use and plug it in your application.
Our team have to decide on which framework to use for one of our upcoming web project,
so just wanted to get more inside top level comparision.
GWT: is a "too Googly" ajax framework (imho), very nice but I don't like the idea of turn almost all the Java code into html and JS AJAX (it's not an easy comparation, 'cus diferent concepts). Also, to compare with ICEFaces you need to see into GWT MVC, which is a attemp to expand the framework, building a MVC capable framework above the GWT thenology.
Spring: too xml verbose. DI (and IO) are the heart of Spring, but you can't compare with ICEFaces 'cus Spring have several parts and Spring Web Flow development is not the best part, even implementing a MVC patter. Btw, ICEFaces development has a smoothly integration with Springframework DI (not Spring Web Flow), and if you like it and you can deal with too much xml's configuration, then you can build very good applications. In other words you can use ICEFaces to replace Spring Web Flow and part of Spingframework to develop the core application's services (DI and more).
Struts: Struts 1.x is almost dead, so we need to write about Struts 2.x (WebWork). As we know Struts 1.x changged completly to become Struts 2.x, it was done merging Struts 1.z and WebWork ... and finaly droping most of the Struts 1.x part. Struts, was a "the facto" MVC Web development framework, but it has several problems mainly due to its Page Control Centric approach, when JSF become to the scena, with component and event control (well, the man that make Struts 1, worked on JSF 1 too), then JSF turn into "the facto" MVC web development framework, even more becouse JSF was a standard and was designed to be extensible.
I never had a look at GWT. But, what I understand is that you generate a lot of application code in the client side. This can be pretty complicate and you can get into maintenance and scalability problems. All this depends on the presentation you want to generate in the browser, of course. So, try to implement a prototype to get a feeling for the pros and cons. Also do this for the other frameworks you think about.
ICEfaces allows to implement pretty complex presentations without getting into scalability problems. So, for the enterprise developer with a lot of requirements to implement in a modern Web application ICEfaces is maybe the better solution.
I suggest to use Spring DI managed beans instead of the standard JSF managed beans in any case. If your backend is Spring based the presentation integrates pretty seamlessly. Our experiences are pretty good with it.
Spring is not "xml" and "verbose" since it delivers the full set of annotations support (Spring release 2.5). xml is not a problem as long you have a good process to manage it ;-).