| About the Author | p. ix |
| About the Technical Reviewer | p. xi |
| Getting Started with JSF | p. 1 |
| Introducing the "Hello world" Application | p. 1 |
| Installing Eclipse | p. 2 |
| Installing JBoss | p. 3 |
| Installing a JSF Implementation | p. 7 |
| Installing Web Beans | p. 8 |
| Creating the "Hello world!" Application with JSF | p. 9 |
| Generating Dynamic Content | p. 17 |
| Retrieving Data from Java Code | p. 20 |
| Exploring the Life Cycle of the Web Bean | p. 25 |
| Using an Easier Way to Output Text | p. 25 |
| Debugging a JSF Application | p. 25 |
| Summary | p. 27 |
| Using Forms | p. 29 |
| Developing a Stock Quote Application | p. 29 |
| Getting the Stock Quote Symbol | p. 29 |
| Displaying the Result Page | p. 36 |
| Displaying the Stock Value | p. 38 |
| Marking Input As Required | p. 40 |
| Inputting a Date | p. 49 |
| Conversion Errors and Empty Input | p. 55 |
| Using a Combo Box | p. 60 |
| Using a Single b2 Bean | p. 62 |
| Hooking Up the Web Beans | p. 63 |
| Summary | p. 66 |
| Validating Input | p. 67 |
| Developing a Postage Calculator | p. 67 |
| What If the Input Is Invalid? | p. 73 |
| Null Input and Validators | p. 78 |
| Validating the Patron Code | p. 80 |
| Creating a Custom Validator for the Patron Code | p. 82 |
| Displaying the Error Messages in Red | p. 86 |
| Displaying the Error Messages Along with the Field | p. 87 |
| Validating a Combination of Multiple Input Values | p. 96 |
| Summary | p. 100 |
| Creating an E-shop | p. 101 |
| Listing the Products | p. 102 |
| Making the Link to Show the Details | p. 106 |
| Displaying Headers in the Columns | p. 115 |
| Implementing a Shopping Cart | p. 116 |
| Displaying the Content of the Shopping Cart | p. 126 |
| The Checkout Function | p. 127 |
| Getting the Credit Card Number of the Current User | p. 131 |
| Forcing the User to Log In | p. 139 |
| Implementing Logout | p. 146 |
| Protecting the Password | p. 148 |
| Summary | p. 149 |
| Creating Custom Components | p. 151 |
| Displaying a Copyright Notice on Multiple Pages | p. 151 |
| Allowing the Caller to Specify the Company Name | p. 157 |
| Creating a Product Editor | p. 159 |
| Passing a Method in a Parameter? | p. 162 |
| Creating a Box Component | p. 163 |
| Accepting Two Pieces of XHTML Code | p. 166 |
| Creating a Reusable Component Library | p. 168 |
| Creating a Component Library Without taglib.xml | p. 170 |
| Summary | p. 172 |
| Providing a Common Layout for Your Pages | p. 173 |
| Using the Same Menu on Different Pages | p. 173 |
| Using Global Navigation Rules | p. 177 |
| Using Two Abstract Parts | p. 178 |
| Creating Page-Specific Navigation Cases | p. 180 |
| Summary | p. 182 |
| Building Interactive Pages with Ajax | p. 183 |
| Displaying a FAQ | p. 183 |
| Refreshing the Answer Only | p. 185 |
| Hiding and Showing the Answer | p. 189 |
| Using Ajax to Hide or Show the Answer | p. 191 |
| Giving a Rating to a Question | p. 194 |
| Updating the Rating as the User Types | p. 199 |
| Using a Dialog Box to Get the Rating | p. 200 |
| Setting the Look and Feel with Skins | p. 204 |
| Displaying Multiple Questions | p. 206 |
| Summary | p. 212 |
| Using Conversations | p. 215 |
| Creating a Wizard to Submit Support Tickets | p. 215 |
| Interference Between Browser Windows | p. 219 |
| URL Mismatched? | p. 225 |
| Summary | p. 229 |
| Supporting Other Languages | p. 231 |
| Displaying the Current Date and Time | p. 231 |
| Supporting Chinese | p. 232 |
| Easier Way to Access Map Elements | p. 237 |
| Internationalizing the Date Display | p. 238 |
| Letting the User Change the Language Used | p. 238 |
| Localizing the Full Stop | p. 243 |
| Displaying a Logo | p. 246 |
| Making the Locale Change Persistent | p. 248 |
| Localizing Validation Messages | p. 250 |
| Summary | p. 251 |
| Using JBoss Seam | p. 253 |
| Installing Seam | p. 253 |
| Re-creating the E-shop Project | p. 254 |
| Allowing the User to Add Products | p. 257 |
| Restricting Access to the Product-Editing Page | p. 265 |
| Creating a Shopping Cart | p. 267 |
| Turning the Shopping Cart into a Stateful Session Bean | p. 273 |
| Creating the Checkout Page | p. 277 |
| Using WebLogic, WebSphere, or GlassFish | p. 284 |
| Summary | p. 284 |
| Index | p. 287 |
| Table of Contents provided by Ingram. All Rights Reserved. |