| Preface | p. ix |
| Introducing JavaServer Faces | p. 1 |
| What Is JavaServer Faces? | p. 1 |
| How Does JSF Compare to Traditional Technologies? | p. 3 |
| Where Does JSF Fit in the Big Picture? | p. 8 |
| What You Need to Get Started | p. 9 |
| JSF Development Process Overview | p. 11 |
| Developing an Application with a JSF-Based User Interface | p. 12 |
| Developing the Application Backend | p. 13 |
| Developing Components and Integration Code | p. 14 |
| Developing the User Interface Pages | p. 17 |
| Setting Up the JSF Environment | p. 21 |
| Installing the Java Software Development Kit | p. 22 |
| Installing the Tomcat Server | p. 23 |
| Testing Tomcat | p. 26 |
| Installing the Book Examples | p. 28 |
| Example Web Application Overview | p. 30 |
| Servlet and JavaServer Pages Basics | p. 32 |
| HTTP | p. 32 |
| Web Application Deployment and Runtime Environment | p. 39 |
| Servlets, Filters, and Listeners | p. 42 |
| JavaServer Pages | p. 49 |
| Accessing Application Data | p. 61 |
| Developing the Business Logic and Setting Up Authentication | p. 64 |
| Sample Application Overview | p. 64 |
| Implementing the Business Logic Classes | p. 66 |
| Authentication and Authorization | p. 78 |
| Creating and Rendering Components | p. 85 |
| The Basics | p. 85 |
| Binding Components to Model Properties | p. 99 |
| Conditionally Render Components | p. 108 |
| Validating Input | p. 115 |
| Dealing with Syntax Errors in User Input | p. 115 |
| Using the Standard Validators | p. 118 |
| Defining Custom Error Messages | p. 126 |
| Using a Custom Validator | p. 127 |
| Other Ways to Validate Input | p. 137 |
| Handling Events | p. 138 |
| Understanding the JSF Event Model | p. 138 |
| Handling Application Backend Events | p. 143 |
| Handling User Interface Events | p. 150 |
| Controlling Navigation | p. 158 |
| Moving Between JSF Views | p. 158 |
| Returning a Non-JSF View Response | p. 165 |
| Returning a JSF View Response to a Non JSF Request | p. 167 |
| Working with Tabular Data | p. 169 |
| Displaying a Read-Only Table | p. 169 |
| Processing Row-Specific Events | p. 173 |
| Dealing with Large Tables | p. 179 |
| Editing Tabular Data | p. 187 |
| Internationalization | p. 193 |
| Localizing Application Output | p. 193 |
| Handling Localized Application Input | p. 203 |
| Dealing with Non-Western Languages | p. 205 |
| Odds and Ends | p. 212 |
| Building a View from Many JSP Files | p. 212 |
| Combining JSF Views with Other Content | p. 221 |
| Dealing with Struts Applications and JSF | p. 224 |
| Programmatically Modifying Components | p. 232 |
| Using a PhaseListener | p. 237 |
| Debugging and Error Handling Ideas | p. 239 |
| Developing Custom Renderers and Other Pluggable Classes | p. 246 |
| Developing Custom Renderers | p. 247 |
| Using Other Custom Classes | p. 272 |
| Packaging Custom Classes | p. 273 |
| Developing Custom Components | p. 274 |
| Extending an Existing Component | p. 274 |
| Developing a New Component from Scratch | p. 283 |
| Developing a Custom Presentation Layer | p. 306 |
| The ViewHandler Class | p. 306 |
| Using Java Classes as Views | p. 307 |
| Using Pure HTML Templates with XML View Definition Files | p. 316 |
| Standard JSF Tag Libraries | p. 329 |
| JSF Expression Language Reference | p. 380 |
| Standard JSF Components and Render Kits | p. 387 |
| Infrastructure API Reference | p. 479 |
| JSF Configuration File Reference | p. 537 |
| Web Application Structure and Deployment Descriptor Reference | p. 550 |
| Index | p. 573 |
| Table of Contents provided by Ingram. All Rights Reserved. |