Design patterns help users to abstract details at a higher level and better understand architecture. If you are familiar with Gang of Four design patterns and the JavaServer Faces (JSF)framework in general, this article will help you gain insight about the design patterns used in JSF framework, and how they work in-depth.
but why is everyone all over JSF? I know, I know…industry support. But the fact remains that JSF is poor implementation of an otherwise good idea.
If someone wants to look at much better way of doing things, check out WebObjects….and if that doesn’t fit (because it probably won’t based upon the ways companies are setup today), look at Tapestry.
Tapestry/Spring/Hibernate….gotta love it.
JSF is very flexible. You should check out Facelets: http://myfaces.apache.org/ (bye bye JSPs; which are not intuitive to use with JSF).
I have used JSF+Facelets for a small project at work and I’m quite satisfied about it.
I think what’s missing the most with JSF is a good open-source component library (Myfaces’s Tomahawk components generally do not follow the JSF standard correctly). Also, one should NOT use the JSF Reference Implementation version 1.1. Use nightly Reference Implementation 1.2 at: https://javaserverfaces.dev.java.net
or Apache MyFaces : http://myfaces.apache.org/.
As for the specification: It nice to use action listeners for UI commands (buttons and links). The framework is very components/object-oriented. When you build on existing components, it’s fairly easy to develop your own components.
Correction :
Facelets: https://facelets.dev.java.net/
MyFaces Tomahawk extensions are JSF compliant since 1.1.0.
MyFaces itself now is a fully JSF 1.1 compliant implementation, it has passed the so called TCK compliance testsuite since 1.1.0.
As for the components, it is true, most people simply check out JSF with the RI and basically only find the most basic controls and then dismiss it, but JSF is much more. First of all it is a really nice (but in parts a little byzantine) web framework which adds a rich client programming model to the whole web programming. You can have events, you can alter the user interface in the backend and you have your usualy actions and page transitions.
But it stays and falls with components, and there are plenty in MyFaces, first there is the Tomahawk component set which you can check out here:
http://www.irian.at/myfaces/home.jsf
and then there are the tobago components:
http://tobago.atanion.net/tobago-example-demo/
which in the long run will become a full part of Myfaces.
And to the latest news Oracle just donated a huge component set derived from ADF faces to the MyFaces project, which will be more than 100 additional components.
http://www.jroller.com/page/RickHigh
Also besides the MyFaces project, there are various other component sets and extensions like this one:
http://www.jenia.org/