JSP is a legacy tech, JSF is like a dinosaur, it's stateful and component based. If you want to develop high traffic distributed apps that can scale tens, hundreds, thousands of nodes, prefer stateless frameworks over component based stateful ones. Stateless frameworks can scale easily. Wicket, Tapestry and Lift are stateful, too. There is Click framework but it doesn't have an innovation nor velocity. Struts was good but it's an old framework now, Spring mvc 3 is better than struts. Yes, Spring mvc was good, but now there is much more better Play! Spring become like Java EE in time, on the other hand Play is dead easy framework with a great community and documantation. It's future is bright. It has lots of features in the core (and its very light) and also there are lots of modules written for play (like rails gems). In the last release, it got websockets, depenency management, db version management, far better scala module,...
Especially, new play scala templating is dead easy, type safe with a state of art syntax (like asp.net mvc razor) with a great performance as you can see in the test http://www.jtict.com/blog/rails-wicket-grails-play-lift-jsp/ (play is fastest in the test)
You can use both java and scala with play, but in my opinion scala is a better language than java and compete with C#, Ruby, Python with new generation features (java cannot), so I prefer scala with play. Lift is a scala framework, too, but it's more and more complicated than play and highly stateful.
Also, your platform and language selection is great. As an experienced .net developer I don't recommend asp.net webforms nor asp.net mvc, always prefer platform independent open source technologies. Python/Django and Ruby/Rails are slow and not type safe. PHP and Perl are legacy techs. The best platform today is jvm (.net works only on windows and mono killed by attachmate), so you're on the right path.