JSF (JavaServer Faces) & Apache MyFaces Training Courses

“Wonderful.  In 20 years,
this is the best organized,
most pragmatic and
enjoyable course I've taken.”

“The best instructor-led
course I have attended, by far.”

“Best short course ever!”

“This course was AWESOME.
I came with very little
knowledge of JSF and now I
look forward to using it
on my next project.”

“GREAT class [JSF/MyFaces]
Do you make house calls?”

more student reviews

Here are the standard topics covered in the JSF course taught by Marty Hall. If you have a group of at least eight interested developers (10 for courses outside the US or Canada), contact Marty to arrange a course at your location. If you have fewer developers, see the public JSF training course page for info on the open-enrollment version in Maryland.

Please note that topics can be added or removed to fit the interest and experience of your developers, and topics from this training course can be combined with topics from other related J2EE courses. For example, some organizations want coverage of some of the basic servlet and JSP topics before moving on to JSF. And many (perhaps most) organizations prefer courses that are essentially a combination of advanced JSP and JSF, where the advanced JSP topics are those for which JSF has no separate facility (declarative security, custom tags, filters, etc.). However, the syllabus below gives an idea of the most popular JSF-only option.

Syllabus

Review

  • Installing and running Web applications
  • The MVC architecture

JSF Intro, Overview, and Setup

  • Understanding JSF
    • Different views of JSF
    • Comparing JSF to standard servlet/JSP technology
    • Comparing JSF to Apache Struts
  • Setting Up JSF
    • Downloading and installing in Tomcat
    • Testing JSF
    • Setting up JSF applications
    • Accessing JSF documentation

Controlling JSF Page Navigation

  • JSF flow of control
  • The basic steps in using JSF
  • Static navigation
    • One result mapping
  • Dynamic navigation
    • Multiple result mappings

Managed Beans

  • Using beans to represent request parameters
  • Declaring beans in faces-config.xml
  • Outputting bean properties
    • Standard JSF approach
    • JSP 2.0 expression language

The JSF Expression Language

  • Motivating use of the expression language
  • Comparing to the JSP 2.0 EL
  • Accessing bean properties
  • Submitting bean properties
    • Expressions in output values
    • Expressions in submission values
    • Expressions for action controllers
  • Accessing collection elements
  • Using implicit objects and operators

JSF Properties Files

  • Loading properties files
  • Simple messages
  • Parameterized messages
  • Internationalized messages

JSF Event Handling

  • Comparing action controllers to event listeners
  • Action listeners
  • Value change listeners
  • Using JavaScript to submit form
    • Browser incompatibilities
  • Combining action listeners and action controllers in the same GUI element

The JSF "h" (HTML) Package

  • Most common usage
  • Shared attributes
  • Implied attributes
  • Elements that can invoke action controllers/listeners
  • Elements that can invoke value change listeners
  • Elements that display lists of items

Custom Apache MyFaces Components (Tomahawk)

  • Tomahawk vs. Trinidad and Tobago
  • Getting the MyFaces components
  • Configuring MyFaces to use Tomahawk
  • Most popular MyFaces components

The Ajax4jsf Component Library

  • Ajax motivation
  • Installation
  • Main Ajax4jsf Elements
    • a4j:commandButton
    • a4j:commandLink
    • a4j:poll
    • a4j:support
  • Limitations on use of h:outputText with Ajax4jsf
  • Other Ajax Toolkits

Validating User Input

  • Manual validation
  • Implicit automatic validation
  • Explicit validation
  • MyFaces validators
  • Creating custom validators

Accessing Databases with JDBC

  • Overview of JDBC technology
  • JDBC drivers
  • Seven basic steps in using JDBC
  • Using JNDI with JDBC
  • Retrieving data from a ResultSet
  • Using prepared and callable statements
  • Submitting multiple statements as a transaction

Using JSF Data Tables

  • Motivation
  • Basic syntax
  • Defining table headings
  • Formatting tables with style sheets
  • Displaying database tables

JSP Custom Tag Libraries: Basics

  • Java-based tags
    • Components of a tag library
    • Basic tags
    • Tags that use attributes
    • Tags that use body content
    • Tags that optionally use body content
  • JSP-based tags (tag files)
    • Components of a tag library
    • Basic tags
    • Tags that use attributes
    • Tags that use body content

Custom JSP Tag Libraries: Advanced Topics

  • Tags with dynamic attribute values
  • Tags with complex objects for attributes
  • Manipulating the tag body
  • Looping tags
  • Nested tags
  • Using SAX and TagLibraryValidator to validate tag library syntax

Developing Custom Components in JSF

  • Main Pieces of Custom Components
    • Java class that extends UIComponent
    • Custom JSP tag
    • TLD file that declares custom tag
    • Entry in faces-config.xml
    • JSP page that uses custom tag
  • Simple output-only components
  • Components that accept attributes
  • Components that accept input

Facelets and Page Templating

  • Facelets motivation
  • Installation and setup
  • Basic mechanism
    • Template file
    • Client file
  • Templating with includes
  • Handling relative URLs
  • Passing data with jsp:param

Laying Out Pages with Apache Tiles
(Note: Most clients choose to cover either Facelets or Tiles, rarely both.)

  • Tiles motivations
  • Setting up JSF (any implementation) for simple Tiles
  • Tiles basics
  • Setting up MyFaces for Tiles definitions
  • Using Tiles definitions file

Using JSTL with JSF

  • Obtaining JSTL documentation and code
  • The JSTL Expression Language
  • Looping Tags
  • Conditional Evaluation Tags
  • Database Access Tags
  • Preserving the MVC Model
  • Other Tags