I would strongly recommend getting someone experienced in JSF to lead your first project in JSF even if this means paying a contractor for 3 months.
The JSF approach is very different to JSP. The way you approach and solve problems is very different.
Libraries
Consider the following libraries:
- Tomahawk
- RichFaces
- Shale
- Trinidad
- Spring
Architecture
Embrace MVC you need not only to know what this means but use it extensively.
There are two main patterns for associating controllers with the views
Dot Net Style, One Request controller per view
Every top level page has a request scoped controller (bean) all validation and actions of the page use this class. Also used for filtering and ordering the Model.
The Model will be stored on a few session level controllers which will handle talking to the back-end (EJBs, or persistence layer) these session controllers should be implementing the business logic and have no knowledge of JSF,HTML or any presentation technology.
Controllers are session level
Design controllers based on your data model, nest them with in each other. (This post is getting too long so I wont go into the nuts and bolts of these).
Knowledge Required
Everyone:
- Life Cycle
- MDC
- Component based development
- Tags in h: and f:
At Least One Person:
- Creating Custom Components
- Limitations to JSF (back button,
random navigation, etc)
- Debug 3rd
party libraries (At least one person
has to be comfortable breaking out
the debugger and stepping into the
implementation of JSF (easiest with
open source implementations like
MyFaces))