877-277-2477
info@capstonecourseware.com
115. JavaServer Faces
Version 2.0

Book cover

This comprehensive course shows Java programmers how to build web applications with JavaServer Faces 2.0. We develop the best-practice concepts that are formalized by the JSF architecture, from model/view/controller to the UI component framework and request-handling lifecycle. Students start to discover that there is a "JSF way" of doing things, and we learn not just APIs and tag libraries but the habit of slicing application logic into its most reusable forms: managed beans, event listeners, converters, validators, and more.

Students acquire a firm command of JSF development, learning to work with JSF's list and table components, building reusable composite components, and building Ajax applications. Simple, high-level Ajax functionality is covered, and students also work more directly with JSF's JavaScript API and resource-management framework.

Prerequisites

  • General note: 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, JavaScript, 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.
  • Java programming experience is essential to understanding the JSF API as presented here -- Course 103 is excellent preparation.
  • General understanding of servlets and JSP is recommended, but not required -- consider courses Course 110 and Course 112.
  • Basic knowledge of XML will be helpful, as will any previous experience with HTML.

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 Facelets tag libraries to build JSF views
  • Use managed beans to encapsulate form handling and server-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
  • Build composite UI fragments or custom components using Facelets
  • Build Ajax applications with JSF: client-side behaviors and partial requests and responses followed by DOM updates

Timeline: 5 days.

Server Support: Tomcat

  • This version of the course works with the Tomcat server. Our Java EE courses are available in variants that support various server products, including Tomcat, GlassFish, JBoss, and WebLogic. For more details, and to find a desired server-specific version of a course, see our server-support matrix.

IDE Support: Eclipse Helios

  • In addition to the primary lab files, an optional overlay is available that adds support for Eclipse Helios. Students can code, build, deploy, and test all exercises from within the IDE, and take advantage of built-in editors, integrated debugging, and wizards for JSF applications, XML files, JSPs, and more. See also our orientation to Using Capstone's Eclipse Overlays.

Chapter 1. Overview

  • Java EE and Web Applications
  • Perspectives: Servlets and JSP
  • Perspectives: MVC Frameworks
  • Perspectives: AWT and JFC
  • JSF Value Proposition
  • JSF Configuration
  • Issues with JSP and JSF
  • Facelets

Chapter 2. Lifecycle

  • The JSF Request/Response Cycle
  • Lifecycle Phases
  • Phase Listeners
  • The FacesContext Class
  • Who Does What
  • Partial Request Cycles

Chapter 3. UI Components

  • The UIComponent Class
  • Behavioral Interfaces
  • The Core and HTML Tag Libraries
  • Relationship to CSS
  • ID, Client ID, and Label
  • UISelectItem(s)
  • Navigating the UI Tree
  • The binding Attribute

Chapter 4. Page Navigation

  • View Selection
  • Navigation Rules
  • Implicit Navigation
  • Problems with POSTback
  • Post/Redirect/Get
  • Support for HTTP GET
  • Conditional Navigation

Chapter 5. Managed Beans

  • JavaBeans and JSF
  • Backing Beans
  • Configuring Managed Beans
  • @ManagedBean and Related Annotations
  • The Unified Expression Language
  • Value and Method Expressions
  • Implicit Objects

Chapter 6. Scopes

  • Managed-Bean Scopes
  • Lifecycle Annotations
  • View Parameters
  • The Flash

Chapter 7. Dependency Injection

  • Managed Properties
  • Values, Lists, and Maps
  • Using Dynamic Expressions
  • Dependencies and Bean Scopes
  • The @ManagedProperty Annotation

Chapter 8. Facelets

  • Migrating from JSP
  • View Definition Languages
  • Facelets
  • Tag Libraries
  • Writing and Using Custom Tags

Chapter 9. Events and Listeners

  • JSF Event Model
  • Event Types and Timing
  • Event Queueing
  • ActionEvent and ActionListener
  • Action Methods
  • Connecting Controllers to Beans
  • ValueChangeEvent and ValueChangeListener
  • Deferring Event Processing
  • Limitations of FacesListeners

Chapter 10. Lists and Tables

  • Working with Collections
  • Why We Don't Use <c:anything> <c:anyMore>
  • <ui:repeat> vs. <c:forEach>
  • <h:dataTable>
  • Defining Columns and Facets
  • One Command Per Row
  • Reading the Row Number
  • Pseudo-Maps
  • Working with Persistent Data
  • Concurrency and Caching
  • Limiting the Scope of Queries
  • Paging

Chapter 11. Converters

  • The Converter Interface
  • Life of a Datum
  • Standard Converters
  • Custom Converters
  • The @FacesConverter Annotation
  • Timing of Conversion
  • Representing Persistent Objects by ID

Chapter 12. Validators

  • The Validator Interface
  • Standard Validators
  • Using Regular Expressions
  • Producing Error Messages
  • Message Keys
  • Presenting Error Messages
  • Posting Error Messages from Anywhere
  • Custom Validators
  • The @FacesValidator Annotation
  • Validating Multiple Inputs
  • JSR-303 Support: "Bean Validation"

Chapter 13. Resources

  • Resource Libraries
  • Deploying Images, Scripts, and Stylesheets
  • Addressing Resources

Chapter 14. Composites

  • Limitations of Custom Tags
  • Composite Components
  • Encapsulation
  • Deploying and Using Composites
  • Interface and Implementation
  • Impact on the UI Tree
  • Attributes
  • Retargeting

Chapter 15. Ajax

  • What is Ajax?
  • The XMLHttpRequest Object
  • Ajax and the JSF Lifecycle
  • Using <f:ajax>
  • execute and render Attributes
  • Ajax Listeners

Chapter 16. The JSF JavaScript API

  • The JSF JavaScript API
  • Trigering Ajax Requests
  • Refining <f:ajax> with Callbacks
  • onevent and onerror Attributes
  • The Ajax Request/Response Process
  • Using Hidden Inputs
  • Other JavaScript Functions

System Requirements

Hardware Requirements (Minimum) Core 2 Duo 1.5 MHz or equivalent, 1 gig RAM, 1 gig disk space.
Hardware Requirements (Recommended) Core 2 Duo 2.5 MHz or equivalent, 4 gig RAM, 1 gig disk space.
Operating System Tested on Windows XP and Windows 7. Course software should be viable on all systems which support a Java 6 Developer's Kit.
Network and Security Limited privileges required -- please see our standard security requirements.
Software Requirements All free downloadable tools.