Ans
1. We integrate two frameworks to exploit best features of both of them.
In your case JSF is one of the best framework for view(UI) part and spring is good at maintaining beans because of its feature DI(Dependency Injection).
Ans 2. the main goals of creating jsf were
- Create a standard UI component framework that can be leveraged by development
tools to make it easier for tool users to both create high-quality UIs and manage the
UI’s connections to application behavior.
- Define a set of simple, lightweight Java base classes for UI components, component
state, and input events. These classes will address UI lifecycle issues, notably
managing a component’s persistent state for the lifetime of its page.
- Provide a set of common UI components, including the standard HTML form input
elements. These components will be derived from the simple set of base classes
(outlined in #1) that can be used to define new components.
- Provide a JavaBeans model for dispatching events from client-side UI controls to
server-side application behavior.
- Define APIs for input validation, including support for client-side validation.
- Specify a model for internationalization and localization of the UI.
- Provide for automatic generation of appropriate output for the target client, taking
into account all available client configuration data, such as the browser version.
- Provide for automatic generation of output containing required hooks for supporting
accessibility, as defined by the Web Accessibility Initiative (WAI).
yes you can create a complex application only with JSF but its lot easier to use it with some other framework like Seam , Spring etc
Source JSF Complete reference