Public (Open Enrollment) Training Course:

JSF (JavaServer Faces) and Apache MyFaces

Fall 2009, Location TBD

This class is now over. JSF 2.0 version is tentatively set for Spring 2010. In the meantime, please contact for information on a customized onsite version at your location. Lower price, more convenient for your developers, and customizable content.

“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]
Do you make house calls?”

more student reviews

This page describes the public (open enrollment) training course on JSF and Apache MyFaces to be held April 28-May 2 at Integrated Computer Concepts Inc. in Annapolis Junction, Maryland. The entire course is personally developed and taught by leading Java EE developer, speaker, and author Marty Hall. No contract instructor teaching someone else's materials! Marty has taught J2EE courses onsite for dozens of organizations in the US, Canada, Mexico, Australia, Japan, Puerto Rico, and the Philippines, all to rave reviews.

If you are looking for customized Java EE training courses taught on-site at your company, please see this page.

Register Early! Five of Marty's previous public Java EE short courses were full, so reserve your spot today. Registrations are taken in the order they are received.


Marty normally runs on-site training courses at customer locations. This is easier administratively, is better for clients since the topics can be customized, and is more cost effective for students since no travel is required. However, due to demand from those who do not have enough students for an on-site course, Marty will be running a public (open enrollment) training course April 28-May 2 on JavaServer Faces and Apache MyFaces.

The course is developed and taught by Marty Hall, an experienced developer, award-winning instructor, popular conference speaker (5 times at JavaOne), and author of several popular J2EE books.


The course will be held at Integrated Computer Concepts Inc. in Annapolis Junction Maryland (between Baltimore and Washington, minutes from BWI airport). This is a modern, comfortable venue with separate computers for each student, fast internet connections, and several nearby hotels.


The 5-day course costs $2395 per student and includes an extensive course notebook,a commercial textbook, exercises, and exercise solutions. Compare this price to courses from Sun, Learning Tree, GlobalKnowledge, and Oracle University that cost around $2400 for 4-day courses and $3000 for 5-day courses. Besides, those courses use an unknown instructor who did not develop the course materials and often lacks significant real-world J2EE development experience.

To register, fill out and send in the course registration form. Space is limited: five previous offerings of Marty's courses were full. Bonus: Register by April 7 and get a $50 gift certificate from


The course consists of an approximately equal mixture of lecture and hands-on lab time and assumes that all students have strong Java skills and at least some previous experience with servlets and JSP. It does not assume any previous exposure to JSF.

More Information

  • Guinea pigs? No! Marty's courses are well-tested, having been taught in 7 countries and dozens of US venues. We don't use your developers as guinea pigs for new materials.
  • Regurgitation? No! Marty developed all his own materials. No contract instructor regurgitating memorized PowerPoint slides.
  • Green? No! Marty is an experienced developer, and is the author of 6 popular Java texts from Prentice Hall. The course gives best practices and real-world strategies. No newbie instructor dodging tough questions.

JSF and Apache MyFaces: Syllabus


  • 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

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

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 and ui:insert
    • Client file and ui:define
  • Templating with includes
    • Why ui:include is better than jsp:include
  • Handling relative URLs
  • Passing data with jsp:param

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