I have been enjoying working on two customer web apps written in SmartGWT. SmartGWT is built on Google’s GWT with the addition of Isomorphic’s smart client library that implements very nice data grids and other UI components and also has good support for wiring rich clients to data sources. Still, there is a lot of ceremony involved in GWT and SmartGWT development so I would recommend these technologies for large projects. For me this ceremony and large learning curve is well worth it because I like coding both rich client and server side components in Java in one development environment (IntelliJ).
For side projects that require a web UI I like using both Play! and Rails (and a lot of Rails development work in the last 3 or 4 years).
Just recently as another side learning project I have been revisiting the Seaside continuation based web framework for Smalltalk. This week I bought the PDF version of “Dynamic Web Development with Seaside” and when I get bits of free time I have really been enjoying reading through the book with a Pharo Smalltalk Seaside image open next to the book to work along and experiment as I read. You can read through this book online also if you want to check out Seaside.
Seaside provides a very agile development environment, both editing code in a Smalltalk browser and hooks in web apps themselves.