Another gripe about JSF: its event handlers also fail silently if you mistype or mis-think a method name. These event handlers were modelled, as we read in the documentation, on the Swing event model. In Java bean events, which is the event model used by Swing, you register an eventhandler explicitly with an addXEventListener. This leaves the method pointer in a structure which is looped over when firing these events. In JSF, though, there is no registration. You indicate that you want a ValueChangeListener, its implementation is just a method signature of name and one Event parameter. Miss out one one of these, for example by mixing up the name when it is late, and you will never know, because it calls the other method and there is no diagnostics at all, neither at compile time nor at runtime.
It was commented that this is the point that I refer to some older mainframe software technology that just worked. I will refrain from that now, but just want to mention that CICS, ISPF and IMS DC all just work. It is the failure of the customer base to not employ these technologies anymore in new systems; this has to do with the powerless position IT managers are in nowadays and the general devaluation of standards due to the mickeysoft era.
On the whole, JSF is not bad technology, it just needs to be fixed to lower the frustration level.