JSF has established itself as a flexible, scalable event-processing engine. JSF technology may not fit in implementing a web application, which is meant for pulling the data, and show various reports. This is best suited for the applications, which involve more user interaction.
I was looking into Apache Shale today. This framework is built on all JSF features. JSF can be used even with struts but it might introduce lot of redundant code. Struts design is with MVC2 pattern, which was invented almost 5 years back, and I think its time to move on to Shale framework for next generation of web application development for more flexibility.