JSF is a very powerful framework with lots of different features and options you can tweak to satisfy your needs. Trying to grasp everything at once would be overwhelming, so we'll take it one step at a time, looking at each feature in the context of the sample expense report application. This chapter focuses on how JSF components are created and rendered, using the sample application filtering criteria and menu areas as concrete examples.
At the core, JSF is a Java API built on top of the Servlet API. In addition, it defines JSP custom tag libraries that hide the API layer to make it easy for Page Authors to include JSF components in a JSP page. Figure 6-1 shows both these layers and how JSF applications can be developed on top of either one or both.
Figure 6-1. JSF layers
As you may recall from Chapter 4, a JSP custom tag library is a collection of custom actions, represented by XML elements in a JSP page and implemented as Java tag handler classes. If the term "custom action" sounds unfamiliar, you may be more familiar with the "custom tag" term. To make a long story short, an XML element includes an opening tag, an element body, and a closing tag, but the word "tag" is commonly used to refer to both tags and elements because it's easier to say and shorter to type. Hence, most people use the term custom tag for what formally should ...