Java Server Faces Fahad R. Golra ECE Paris Ecole d'Ingénieurs - FRANCE
Lecture 8 - Java Server Faces (JSF) • Introduction to JSF • JSF Architecture • JSF Lifecycle • JSF Development Steps 2 JEE - Java Server Faces (JSF)
3 Layers of Information System 3 JEE - Java Server Faces (JSF) presentation layer application logic layer resource management layer Client informationsystem EJB JSP JSF Servlets JPA Database
Java Server Faces • JavaServer Faces technology is a server-side user interface component framework for Java technology- based web applications. 4 JEE - Java Server Faces (JSF)
Components of JSF • An API for • representing UI components and managing their state • handling events • server-side validation • data conversion • defining page navigation • supporting internationalisation and accessibility • Two JavaServer Pages (JSP) custom tag libraries for expressing UI components within a JSP page and for wiring components to server-side objects 5 JEE - Java Server Faces (JSF)
Why JSF ? • Drop components onto a page by adding component tags • Wire component-generated events to server-side application code • Bind UI components on a page to server-side data • Construct a UI with reusable and extensible components • Save and restore UI state beyond the life of server requests 6 JEE - Java Server Faces (JSF)
Request Scope 7 JEE - Java Server Faces (JSF) client Serverrequest response Request Scope request response Request Scope client 2 request response Request Scope perrequestperrequest
Session Scope 8 JEE - Java Server Faces (JSF) client Serverrequest response Session Scope request response client 2 request response Session Scope perclientperclient
Application Scope 9 JEE - Java Server Faces (JSF) client Serverrequest response Application Scope request response client 2 request response perapplication
JSF Architecture 10 JEE - Java Server Faces (JSF)
JSF User Interface • The UI for the web application manages the objects referenced by the JSP page. • These objects include • The UI component objects that map to the tags on the JSP page • Any event listeners, validators, and converters that are registered on the components • The JavaBeans components that encapsulate the data and application- specific functionality of the components 11 JEE - Java Server Faces (JSF)
JSF Lifecycle 12 JEE - Java Server Faces (JSF) Client Browser client Restore Value Re-constitute component tree Apply Request Values Process Events, Validators Render Response Invoke Application Logic Update Model Values
Restore View Phase • JSF implementation • builds the view of the page • wires event handlers and validators to components in the view • saves the view in the FacesContext instance • Initial Request - creates an empty view, advances to the render response phase • Subsequent Request - restores the (already existing) view by using the state information saved on the client or the server 13 JEE - Java Server Faces (JSF)
Apply Request Values Phase • Each component in the tree extracts its new value from the request parameters by using its decode method • Implementation skips to the render response phase if renderResponse is called • If events have been queued, the they are broadcasted to interested listeners • validation, conversion, and events associated with components having immediate attributes will be processed during this phase 14 JEE - Java Server Faces (JSF)
Process Event, Validators Phase • JavaServer Faces implementation processes all validators registered on the components in the tree • If validation fails, error message is added to FacesContext • Events from previous phase and this phase are used to render errors by advancing to render response phase • Implementation skips to the render response phase if renderResponse is called • If events have been queued, the they are broadcasted to interested listeners 15 JEE - Java Server Faces (JSF)
Update Model Values Phase • If data is valid, the implementation can traverse the component tree and set the corresponding server-side object properties to the components’ local values. • Implementation will update the bean properties pointed at by an input component’s value attribute. • Implementation skips to the render response phase to display any error messages • If events have been queued, the they are broadcasted to interested listeners 16 JEE - Java Server Faces (JSF)
Invoke Application Logic Phase • JSF implementation handles any application-level events, such as submitting a form or linking to another page • If the view being processed was reconstructed from state information from a previous request and if a component has fired an event, these events are broadcast to interested listeners. 17 JEE - Java Server Faces (JSF)
Render Response Phase • JSF implementation delegates authority for rendering the page to the JSP container if the application is using JSP pages. • For initial request, the components represented on the page will be added to the component tree • components don’t need to added again for subsequent requests • Components will be rendered as the JSP container traverses the tags in the page. • queued error messages are displayed, if any • Once rendered, the state of the response is saved so that subsequent requests can access it 18 JEE - Java Server Faces (JSF)
UI Components • UIComponent/UIComponentBase • Base class for all user interface components • Standard UIComponent Subclasses • UICommand, UIForm, UIOutput • UIGraphic, UIInput, UIPanel, UIParameter • UISelectBoolean, UISelectMany, UISelectOne • Example <h:inputText id=“fNameInput" value="#{UserRegistrationBean.firstName}"/> 19 JEE - Java Server Faces (JSF)
JSF Validators • Validators—Perform correctness checks on UIInput values • Register one or more per component • Enqueue one or more messages on errors • Standard implementations for common cases • Example <h:input_text valueRef=”testingBean.today” <f:validator_length minimum=”6” maximum='10” /> 20 JEE - Java Server Faces (JSF)
JSF Converters • Converters—Plug-in for conversions: • Output: Object to String • Input: String to Object • Standard implementations for common cases • Example <h:input_text valueRef=”testingBean.today” convertor=”DateTime”/> 21 JEE - Java Server Faces (JSF)
Navigation • Application developer defines the navigation model of the web application • in Application configuration file (Facesconfig.xml) • Navigation rules • Determine where (page) to go. • Precise navigation case 22 JEE - Java Server Faces (JSF)
JSF Development Steps 1. Build Model from Java Beans • Lifetime Configured by developer and managed by JSF • Request, Session, or Application Scope • Setters and getters accessed through JSF pages 2. Add model objects (managed bean) declarations to Application Configuration File faces-config.xml 3. Use UI Components to build JSF pages • Include JSF Tags, Validation and Event Listeners 4. Define Page Navigation rules in faces.config.xml 5. Configure web.xml 23 JEE - Java Server Faces (JSF)
Step 1 - Build Model • The model (M) in MVC • A regular JavaBeans with getters / setters • May contain application methods and event handlers • Use to hold data from a UI (page) • Creation and lifetime is managed by JSF runtime • application, session, request • JSF keeps the bean's data in sync with the UI 24 JEE - Java Server Faces (JSF)
Step 2 - Declare Model Objects • In Faces-config.xml <managed-bean> <managed-bean-name> LoginFormBean </managed-bean-name> <managed-bean-class> myapp.LoginFormBean </managed-bean-class> <managed-bean-scope> request </managed-bean-scope> </managed-bean> 25 JEE - Java Server Faces (JSF)
Step 3 - Create JSF Pages • Must include JSF tag library • HTML and core tags • All JSF tags must enclosed between a set of view tag • Use JSF form and form component tags • <h:input_text> not <input type=”text”> • <h:command_button> not <input type=”submit”> • May include validators and event listeners on any form components 26 JEE - Java Server Faces (JSF)
Step 3 - Create JSF Pages <f:view> <f:form formName=”logonForm”> <h:panel_grid columns=”2”> <h:output_text value=”Username:”/> <h:input_text id=”username” length=”16” valueRef=”logonBean.username”/> <h:output_text value=”Password:”/> <h:input_secret id=”password” length=”16” valueRef=”logonBean.password”/> <h:command_button type=”submit” label=”Log On” actionRef=”logonBean.logon”/> <h:command_button type=”reset” label=”Reset”/> </h:panel_grid> </f:form> </f:view> 27
Step 4 - Define Navigation <navigation-rule> <from-tree-id> /login.jsp </from-tree-id> <navigation-case> <from-outcome>success</from-outcome> <to-tree-id>/menu.jsp</to-tree-id> </navigation-case> <navigation-case> <from-outcome>failed</from-outcome> <to-tree-id>/error.jsp</to-tree-id> </navigation-case> </navigation-rule> 28 JEE - Java Server Faces (JSF)
Step 5 - Configure Web.xml <context-param> <param-name> javax.faces.application.CONFIG_FILES </param-name> <param-value>/WEB-INF/faces-config.xml </param-value> </context-param> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class> javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup> 1 </load-on-startup> </servlet> <!-- Faces Servlet Mapping --> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>/faces/*</url-pattern> </servlet-mapping> 29 JEE - Java Server Faces (JSF)
JSF vs. JSP for UI 30 JSF JSP Components • Rich UI-data-bound components with events provided • Custom components • Standard tags (JSTL) that are non-UI and very basic • Custom components through tag libraries Device independence • Reader kits that provide device independence • None Error handling and validation • Validation framework • Many predefined validators • None Scripting • Scripts can be attached to events • All components accessible from scripts • Embedded Java in the page Page flow • Simple navigation file (faces- config.xml) • None
31 JEE - Java Server Faces (JSF)

Lecture 10 - Java Server Faces (JSF)

  • 1.
    Java Server Faces FahadR. Golra ECE Paris Ecole d'Ingénieurs - FRANCE
  • 2.
    Lecture 8 -Java Server Faces (JSF) • Introduction to JSF • JSF Architecture • JSF Lifecycle • JSF Development Steps 2 JEE - Java Server Faces (JSF)
  • 3.
    3 Layers ofInformation System 3 JEE - Java Server Faces (JSF) presentation layer application logic layer resource management layer Client informationsystem EJB JSP JSF Servlets JPA Database
  • 4.
    Java Server Faces •JavaServer Faces technology is a server-side user interface component framework for Java technology- based web applications. 4 JEE - Java Server Faces (JSF)
  • 5.
    Components of JSF •An API for • representing UI components and managing their state • handling events • server-side validation • data conversion • defining page navigation • supporting internationalisation and accessibility • Two JavaServer Pages (JSP) custom tag libraries for expressing UI components within a JSP page and for wiring components to server-side objects 5 JEE - Java Server Faces (JSF)
  • 6.
    Why JSF ? •Drop components onto a page by adding component tags • Wire component-generated events to server-side application code • Bind UI components on a page to server-side data • Construct a UI with reusable and extensible components • Save and restore UI state beyond the life of server requests 6 JEE - Java Server Faces (JSF)
  • 7.
    Request Scope 7 JEE- Java Server Faces (JSF) client Serverrequest response Request Scope request response Request Scope client 2 request response Request Scope perrequestperrequest
  • 8.
    Session Scope 8 JEE- Java Server Faces (JSF) client Serverrequest response Session Scope request response client 2 request response Session Scope perclientperclient
  • 9.
    Application Scope 9 JEE- Java Server Faces (JSF) client Serverrequest response Application Scope request response client 2 request response perapplication
  • 10.
    JSF Architecture 10 JEE- Java Server Faces (JSF)
  • 11.
    JSF User Interface •The UI for the web application manages the objects referenced by the JSP page. • These objects include • The UI component objects that map to the tags on the JSP page • Any event listeners, validators, and converters that are registered on the components • The JavaBeans components that encapsulate the data and application- specific functionality of the components 11 JEE - Java Server Faces (JSF)
  • 12.
    JSF Lifecycle 12 JEE- Java Server Faces (JSF) Client Browser client Restore Value Re-constitute component tree Apply Request Values Process Events, Validators Render Response Invoke Application Logic Update Model Values
  • 13.
    Restore View Phase •JSF implementation • builds the view of the page • wires event handlers and validators to components in the view • saves the view in the FacesContext instance • Initial Request - creates an empty view, advances to the render response phase • Subsequent Request - restores the (already existing) view by using the state information saved on the client or the server 13 JEE - Java Server Faces (JSF)
  • 14.
    Apply Request ValuesPhase • Each component in the tree extracts its new value from the request parameters by using its decode method • Implementation skips to the render response phase if renderResponse is called • If events have been queued, the they are broadcasted to interested listeners • validation, conversion, and events associated with components having immediate attributes will be processed during this phase 14 JEE - Java Server Faces (JSF)
  • 15.
    Process Event, ValidatorsPhase • JavaServer Faces implementation processes all validators registered on the components in the tree • If validation fails, error message is added to FacesContext • Events from previous phase and this phase are used to render errors by advancing to render response phase • Implementation skips to the render response phase if renderResponse is called • If events have been queued, the they are broadcasted to interested listeners 15 JEE - Java Server Faces (JSF)
  • 16.
    Update Model ValuesPhase • If data is valid, the implementation can traverse the component tree and set the corresponding server-side object properties to the components’ local values. • Implementation will update the bean properties pointed at by an input component’s value attribute. • Implementation skips to the render response phase to display any error messages • If events have been queued, the they are broadcasted to interested listeners 16 JEE - Java Server Faces (JSF)
  • 17.
    Invoke Application LogicPhase • JSF implementation handles any application-level events, such as submitting a form or linking to another page • If the view being processed was reconstructed from state information from a previous request and if a component has fired an event, these events are broadcast to interested listeners. 17 JEE - Java Server Faces (JSF)
  • 18.
    Render Response Phase •JSF implementation delegates authority for rendering the page to the JSP container if the application is using JSP pages. • For initial request, the components represented on the page will be added to the component tree • components don’t need to added again for subsequent requests • Components will be rendered as the JSP container traverses the tags in the page. • queued error messages are displayed, if any • Once rendered, the state of the response is saved so that subsequent requests can access it 18 JEE - Java Server Faces (JSF)
  • 19.
    UI Components • UIComponent/UIComponentBase •Base class for all user interface components • Standard UIComponent Subclasses • UICommand, UIForm, UIOutput • UIGraphic, UIInput, UIPanel, UIParameter • UISelectBoolean, UISelectMany, UISelectOne • Example <h:inputText id=“fNameInput" value="#{UserRegistrationBean.firstName}"/> 19 JEE - Java Server Faces (JSF)
  • 20.
    JSF Validators • Validators—Performcorrectness checks on UIInput values • Register one or more per component • Enqueue one or more messages on errors • Standard implementations for common cases • Example <h:input_text valueRef=”testingBean.today” <f:validator_length minimum=”6” maximum='10” /> 20 JEE - Java Server Faces (JSF)
  • 21.
    JSF Converters • Converters—Plug-infor conversions: • Output: Object to String • Input: String to Object • Standard implementations for common cases • Example <h:input_text valueRef=”testingBean.today” convertor=”DateTime”/> 21 JEE - Java Server Faces (JSF)
  • 22.
    Navigation • Application developerdefines the navigation model of the web application • in Application configuration file (Facesconfig.xml) • Navigation rules • Determine where (page) to go. • Precise navigation case 22 JEE - Java Server Faces (JSF)
  • 23.
    JSF Development Steps 1.Build Model from Java Beans • Lifetime Configured by developer and managed by JSF • Request, Session, or Application Scope • Setters and getters accessed through JSF pages 2. Add model objects (managed bean) declarations to Application Configuration File faces-config.xml 3. Use UI Components to build JSF pages • Include JSF Tags, Validation and Event Listeners 4. Define Page Navigation rules in faces.config.xml 5. Configure web.xml 23 JEE - Java Server Faces (JSF)
  • 24.
    Step 1 -Build Model • The model (M) in MVC • A regular JavaBeans with getters / setters • May contain application methods and event handlers • Use to hold data from a UI (page) • Creation and lifetime is managed by JSF runtime • application, session, request • JSF keeps the bean's data in sync with the UI 24 JEE - Java Server Faces (JSF)
  • 25.
    Step 2 -Declare Model Objects • In Faces-config.xml <managed-bean> <managed-bean-name> LoginFormBean </managed-bean-name> <managed-bean-class> myapp.LoginFormBean </managed-bean-class> <managed-bean-scope> request </managed-bean-scope> </managed-bean> 25 JEE - Java Server Faces (JSF)
  • 26.
    Step 3 -Create JSF Pages • Must include JSF tag library • HTML and core tags • All JSF tags must enclosed between a set of view tag • Use JSF form and form component tags • <h:input_text> not <input type=”text”> • <h:command_button> not <input type=”submit”> • May include validators and event listeners on any form components 26 JEE - Java Server Faces (JSF)
  • 27.
    Step 3 -Create JSF Pages <f:view> <f:form formName=”logonForm”> <h:panel_grid columns=”2”> <h:output_text value=”Username:”/> <h:input_text id=”username” length=”16” valueRef=”logonBean.username”/> <h:output_text value=”Password:”/> <h:input_secret id=”password” length=”16” valueRef=”logonBean.password”/> <h:command_button type=”submit” label=”Log On” actionRef=”logonBean.logon”/> <h:command_button type=”reset” label=”Reset”/> </h:panel_grid> </f:form> </f:view> 27
  • 28.
    Step 4 -Define Navigation <navigation-rule> <from-tree-id> /login.jsp </from-tree-id> <navigation-case> <from-outcome>success</from-outcome> <to-tree-id>/menu.jsp</to-tree-id> </navigation-case> <navigation-case> <from-outcome>failed</from-outcome> <to-tree-id>/error.jsp</to-tree-id> </navigation-case> </navigation-rule> 28 JEE - Java Server Faces (JSF)
  • 29.
    Step 5 -Configure Web.xml <context-param> <param-name> javax.faces.application.CONFIG_FILES </param-name> <param-value>/WEB-INF/faces-config.xml </param-value> </context-param> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class> javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup> 1 </load-on-startup> </servlet> <!-- Faces Servlet Mapping --> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>/faces/*</url-pattern> </servlet-mapping> 29 JEE - Java Server Faces (JSF)
  • 30.
    JSF vs. JSPfor UI 30 JSF JSP Components • Rich UI-data-bound components with events provided • Custom components • Standard tags (JSTL) that are non-UI and very basic • Custom components through tag libraries Device independence • Reader kits that provide device independence • None Error handling and validation • Validation framework • Many predefined validators • None Scripting • Scripts can be attached to events • All components accessible from scripts • Embedded Java in the page Page flow • Simple navigation file (faces- config.xml) • None
  • 31.
    31 JEE -Java Server Faces (JSF)