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.