I had to go through this process almost a year ago. I went the PrimeFaces route because:
1. It is compatible with other component libraries. It was the case at the time that ICEFaces
was not compatible with PrimeFaces or RichFaces, but you can use PrimeFaces and RichFaces
components on a "pick and mix" basis. I just use vanilla JSF (Mojarra) and PrimeFaces
components in my application now so can't comment on inter-operability as things stand,
however this was my understanding then.
2. PrimeFaces had a JSF 2 ready version out very quickly, I can't recall exactly when but I
can recall that Glassfish v3 was released with JSF 2 on December 9th 2009, and RichFaces
are still on a development milestone release at this time. I had never anticipated that this
was going to take so long when I was making architecture decisions last year.
3. PrimeFaces is very easy to integrate with your application. Just download the jar, add it
to the classpath and you don't even need to change the deployment descriptor (or maybe
there was one thing).
4. There is a very supportive user community.
5. In addition to the primefaces forum you have the showcase which has source code on
the page, the user guide, and all the source code is available if you're keen enough.
6. NetBeans integration - this is what I use (NetBeans) and all the taglibs get picked up
from the jar when it's in your classpath and then you can see which tags and attributes
are available (i.e. type "<p:" & CTRL+SPACE), without any mucking about.
I just went back and read the post and noticed your questions regarding ajax and
efficiency. I use ajax extensively with primefaces components and it works fine. A lot
of components have built in ajax capability, such as p:datatable which allows you to
specify a component to update (update=) which is equivalent to using a child (or parent)
f:ajax render= tag. I've no idea about efficiency, my approach at present is "make it
work first before you make it work fast", truer words I've never heard.
http://www.primefaces.org/showcase/ui/home.jsf
Regards,
Brendan.