J a v a Server Faces
More matured since Struts has been started for a few years. It has got various successful implementations.
Less matured than Struts.
The heart of Struts framework is the controller,which uses the front controller configuration pattern and the command design pattern. Struts framework has got only single event handler for the HTTP handler.
The heart of JSF framework is the Page Controller Pattern where there is a front controller servlet where all the faces request send through with the UI elements and then fire off events for each component and render the elements using a render toolkit. Also JSF loosely couples your program, where it may hook into your model.
Struts does not have the principle of Rapid
Application Development (RAD).
JSF was creating with a component model in mind to allow RAD. JSF may be thought of as a combination of Struts framework for thin users and the Java Swing user interface framework for thick users.
Has got flexible page navigation using navigation principles inside the Action classes and struts-config.xml file using mapping.findForward (...) .
JSF allows for a better design and more flexible navigation because the navigation principle is decoupled from the Action whereas Struts performs you to hook navigation into your Action classes.