Course Catalog
Curriculum Guides
  .NET
  Java/J2EE
  XML
Downloads
Buy Courseware
Customization
News
Authors
Technical Library
FAQ
About Object Innovations
Opportunities
Contact Us
Home

 

 

   
www.objectinnovations.com
info@objectinnovations.com
877-558-7246 (toll free)  
781-466-8012  

115A.  JavaServer Faces

Rev. 1.2.3

This course is now available directly from our partner, Capstone Courseware.

This course is an extension of Course 115, adding a two day-module on advanced techniques focused on custom component libraries, JavaScript, and Ajax. Proceeding from a foundation of Java, Servlets, and JSP, the course develops the best-practice concepts of MVC architecture and command-object encapsulation that propel the JSF architecture. Students create JSF Web applications by organizing their pages as JSF component trees, and their server-side code as JSF managed beans and controllers. They add data-conversion and validation logic and learn to work with JSF's data-table control.

 

Then, we change our perspective a bit and start thinking in terms of reusable component libraries -- using them and also developing them. Custom components prove to be the ideal delivery vehicle for JavaScript in JSF applications, and ultimately serve as the backbone of a robust Java/Ajax architecture. We work with two popular component libraries along the way -- Tomahawk and RichFaces -- and also get a look at Direct Web Remoting, or DWR.

 

LEARNING OBJECTIVES

 

·         Understand the purpose and scope of the JSF architecture

·         Build Web applications using JSF's FacesServlet, faces-config.xml, and the JSF request/response lifecycle

·         Use managed beans to encapsulate not only server-side form handling but also client-side presentation logic

·         Implement control logic as JSF event listeners or action methods.

·         Use validators and converters to implement a validation phase for a JSF application

·         Use custom component libraries.

·         Develop custom components for a variety of purposes, including composite components.

·         Use custom components to encapsulate and deliver JavaScript content.

·         Develop Ajax applications using JSF and DWR.

·         Develop Ajax applications using RichFaces.

 

Course Duration:  5 days.

 

Audience: This course is intended primarily for experienced Java application developers. Page authors, component developers, and others who may have little or no Java experience (but perhaps are stronger on HTML and JSP) may well find this to be a valuable training experience, though without solid Java skills many of the coding exercises will be difficult to follow..

 

Prerequisites: 

·         Java programming experience is essential to understanding the JSF API as presented here -- Course 103 is excellent preparation.

·         JSP page-authoring experience is required -- Course 112.

·         Servlets programming experience is recommended but not required -- Course 110.

·         Basic knowledge of XML will be helpful, as will any previous experience with HTML.

 

Module 1. JavaServer Faces

 

1.      Overview

Java EE and Web Applications

Perspectives: Servlets and JSP

The Model/View/Controller Pattern

Perspectives: MVC Frameworks

The Command Pattern

Perspectives: AWT and JFC

JSF Value Proposition

JSF Configuration

 

2.      Lifecycle and Page Navigation

The JSF Request/Response Cycle

Lifecycle Phases

The FacesContext Class

Who Does What

View Selection

Navigation Rules

Outcomes

 

3.      User Interface Components

The Composite View Pattern

The UIComponent Class

Behavioral Interfaces

The Core and HTML Tag Libraries

Relationship to CSS

ID, Client ID, and Label

The UISelectItem(s) Class

Navigating the UI Tree

 

4.      Managed Beans

JavaBeans and JSF

Backing Beans

The Factory Pattern

Managed Beans

Coarse-Grained Beans

The Unified Expression Language

Value Expressions

Dependency Injection

Bean Scopes

 

5.      Events and Controllers

The Observer Pattern

JSF Event Model

Event Types and Timing

Event Queueing

ActionEvent and ActionListener

Action Methods

Connecting Controllers to Beans

Dynamic Outcomes

ValueChangeEvent and ValueChangeListener

Limitations of FacesListeners

 

6.      Converters

The Adapter Pattern

The Converter Interface

Standard Converters

Working with Enumerated Types

Timing of Conversion

Custom Converters

Configuring Converters

 

7.      Validators

Validating Input

The Validator Interface

Standard Validators

Producing Error Messages

Message Keys

Presenting Error Messages

Custom Validators

Validating Multiple Inputs

Using a PhaseListener

 

8.      Data Tables

Managing Tabular Data

The JSF Data Table

Columns

Facets

Limitations and Strategies

Nesting Tables

 

Module 2. Custom Components

 

9.      Using Custom Components

Component Libraries

Deployment Model

Apache Tomahawk

 

10. Developing Custom Components

The Components of a Component

Custom Tags and CSS vs. Custom Components

The UIComponent Class

The Renderer Class

Encoding and Decoding

The UIComponentELTag Class

Using the Default Renderer

State-Saving Concerns

 

11. Composites

Composite Components

JSF Composite vs. HTML Composite

Composite vs. Shell

Creating, Configuring, and Assembling

 

12. Delivering JavaScript

Client-Side Scripting

HTML Events and the HTML DOM

Encoding Scripts

JSF and Script Libraries

Encoding Scripts Once

Encoding Scripts Uniquely

 

13. Ajax Applications

What is Ajax?

Request Formats

Means of Triggering HTTP Requests

Asynchronous Response Handling

Direct Web Remoting

Server-Side Strategies

Invoking Managed Beans

 

14. Ajax Components

Server-Side Strategies: Another Look

Model/View/Controller for Ajax

JSF Lifecycle and Partial Page Rendering

RichFaces

Triggering Ajax Requests

Re-Rendering

Input Validation

Customizing Custom Components

 

Appendix A. Learning Resources

Appendix B. JSF Quick Reference

 

JSF Custom Tags

Packages and Classes

JSF API: Finding Things

JSF API: Controllers, Converters, and Validators

 

System Requirements

 

Hardware – minimal:                     500 MHz, 256 meg RAM, 500 meg disk space

Hardware – recommended:           1.5 GHz, 512 meg RAM, 1 gig disk space

 

Operating system:                          Tested on Windows XP Professional. Course software should be viable on all systems which support a J2SE 5.0 JDK.

 

Software:                                       All free downloadable tools.