While you need basic functionalities, everything is fine. When you need to modify the component (which is configurable, right?) you are facing the problems
EXTREMELY idiotic thing - because JSF has their famous lifecycle with lots of magic phases, some backing bean getters are called multiple times!
Back button problem.
Unreadable URLs. JSF always does the POST.
JSF is submitting a form on itself so it could call a backing bean method to handle an event. Of course, if you have a request, there is unnecessary repeated initialization, getter calls, postconstruct etc
Reusability? Good joke…
JSF - you are FIRED!
IDE support
Development of custom component? No way, extremely complicated. Extensible? In the movie, maybe…