I've always loved JavaServer Faces. I believe it is the closest you get to writing real object-oriented web-based solutions. Don't get me wrong, I use and like many web frameworks, but JSF has to be my favourite. However, one of the big problems with JSF is that it is pretty basic out-of-the-box. This is completely intended as JSF is supposed to solve the low-level issues in developing web-based solutions, and leave the sophisticated user interface components to component developers, much like Swing. What makes JSF really powerful are component libraries like JBoss RichFaces, ICEFaces, and PrimeFaces. There has been a ton of books focusing on the core of JavaServer Faces (my personal favourite is JSF in Action by Kito Mann) but they all seem to stop when it is getting interesting; using component libraries to enhance your applications. It was therefore a pleasure to read and review this book about RichFaces 3.3.
The book is a good 273 pages well-suited for JSF beginners and experts alike. The book assumes that you are already familiar with JSF, so if you don't already grasp the topics of managed beans, page navigation, validators and converters, you might want to start somewhere else. It starts out explaining how RichFaces fits in the JSF world and how to set up your own environment for developing RichFaces applications. Once you've gotten started Demetrio takes the reader through a "Contact manager" case study, spanning eight chapters, touching on all the essential areas of RichFaces. One of the great things about this book is that Demetrio carefully explains each step and technique used so that the reader doesn't get confused or left wondering. All too often you read books where you have to consult Google before getting it, but this is not one of those books. My two favourite chapters are Chapter 9 and 11, which explains how to create a new skin for your RichFaces applications and how to develop custom components respectively. Both these areas are overlooked by many developers who end up writing twice as much code to style their components or provide frequently used composite components. In my opinion the only drawback is that many of the code examples is based on JBoss Seam rather than plain JSF.
I can strongly recommend this book to any JSF developer who wants to take their application to the next level with RichFaces.