Using JavaServer Faces Technology in JSP Pages
- The Example JavaServer Faces Application
- Setting Up a Page
- Using the Core Tags
- Using the HTML Component Tags
- Using Localized Messages
- Using the Standard Converters
- Registering Listeners on Components
- Using the Standard Validators
- Binding Component Values and Instances to External Data Sources
- Referencing a Backing Bean Method
The page author's responsibility is to design the pages of a JavaServer Faces application. This includes laying out the components on the page and wiring them to backing beans, validators, converters, and other back-end objects associated with the page. This chapter uses the Duke's Bookstore application and the Coffee Break application (see Chapter 35) to describe how page authors use the JavaServer Faces tags to
-
Layout standard UI components on a page
-
Reference localized messages
-
Register converters, validators, and listeners on components
-
Bind components and their values to back-end objects
-
Reference backing bean methods that perform navigation processing, handle events, and perform validation
This chapter also describes how to include custom objects created by application developers and component writers on a JSP page.
The Example JavaServer Faces Application
The JavaServer Faces technology chapters of this tutorial primarily use a rewritten version of the Duke's Bookstore example to illustrate the basic concepts of JavaServer Faces technology. This version of the Duke's Bookstore example includes several JavaServer Faces technology features:
-
The JavaServer Faces implementation provides FacesServlet, whose instances accept incoming requests and pass them to the implementation for processing. Therefore, the application does not need to include a servlet (such as the Dispatcher servlet) that processes request parameters and dispatches to application logic, as do the other versions of Duke's Bookstore.
-
A custom image map component that allows you to select the locale for the application.
-
Navigation configured in a centralized application configuration resource file. This eliminates the need to calculate URLs, as other versions of the Duke's Bookstore application must do.
-
Backing beans associated with the pages. These beans hold the component data and perform other processing associated with the components. This processing includes handling the event generated when a user clicks a button or hyperlink.
-
Tables that display the books from the database and the shopping cart are rendered with the dataTable tag, which is used to dynamically render data in a table. The dataTable tag on bookshowcart.jsp also includes input components.
-
A custom validator and a custom converter are registered on the credit card field of the bookcashier.jsp page.
-
A value-change listener is registered on the Name field of bookcashier.jsp. This listener saves the name in a parameter so that bookreceipt.jsp can access it.
This version of Duke's Bookstore includes the same pages listed in Table 12-1. It also includes the chooselocale.jsp page, which displays the custom image map that allows you to select the locale of the application. This page is displayed first and advances directly to the bookstore.jsp page after the locale is selected.
The packages of the Duke's Bookstore application are:
-
backing: Includes the backing bean classes
-
components: Includes the custom UI component classes
-
converters: Includes the custom converter class
-
listeners: Includes the event handler and event listener classes
-
model: Includes a model bean class
-
renderers: Includes the custom renderers
-
resources: Includes custom error messages for the custom converter and validator
-
taglib: Includes custom tag handler classes
-
util: Includes a message factory class
-
validators: Includes a custom validator class
Chapter 19 describes how to program backing beans, custom converters and validators, and event listeners. Chapter 20 describes how to program event handlers, custom components, renderers, and tag handlers.
The source code for the application is located in the <INSTALL>/j2eetutorial14/examples/web/bookstore6/ directory. A sample bookstore6.war is provided in <INSTALL>/j2eetutorial14/examples/web/provided-wars/. To build, package, deploy, and run the example, follow these steps:
-
Build and package the bookstore common files as described in Duke's Bookstore Examples (page 100).
-
Go to <INSTALL>/j2eetutorial14/examples/web/bookstore6/ and run asant build.
-
Start the Sun Java System Application Server Platform Edition 8.
-
Perform all the operations described in Accessing Databases from Web Applications, page 100.
-
Start deploytool.
-
Create a Web application called bookstore6 by running the New Web Component Wizard. Select File→New→Web Component.
-
In the New Web Component wizard:
-
Select the Create New Stand-Alone WAR Module radio button.
-
In the WAR Location field, enter <INSTALL>/j2eetutorial14/examples/web/bookstore6.war.
-
In the WAR Name field, enter bookstore6.
-
In the Context Root field, enter /bookstore6.
-
Click Edit Contents.
-
In the Edit Contents dialog box, navigate to <INSTALL>/j2eetutorial14/examples/web/bookstore6/build/. Select everything in the build directory and click Add.
-
In the Contents tree, drag the resources package to the WEB-INF/classes directory.
-
In the Contents tree, drag faces-config.xml to the WEB-INF directory.
-
In the Edit Contents dialog box, navigate to <INSTALL>/j2eetutorial14/examples/web/bookstore/dist/. Select bookstore.jar and click Add.
-
In the Edit Contents dialog box, navigate to <J2EE_HOME>/lib/ and select the jsf-api.jar. Click Add, and then Click OK.
-
Click Next.
-
Select the Servlet radio button.
-
Click Next.
-
Select javax.faces.webapp.FacesServlet from the Servlet Class combo box.
-
In the Startup Load Sequence Position combo box, enter 1.
-
Click Finish.
-
-
Provide a mapping for the FacesServlet Web component.
-
Select the FacesServlet Web component that is contained in the bookstore6 Web application from the tree.
-
Select the Aliases tab.
-
Click Add and enter *.faces in the Aliases field.
-
-
Specify where state is saved.
-
Select the bookstore6 WAR from the tree.
-
Select the Context tabbed pane and click Add.
-
Enter javax.faces.STATE_SAVING_METHOD in the Coded Parameter field.
-
Enter client in the Value field.
-
-
Set preludes and codas for all JSP pages.
-
Select the JSP Properties tab.
-
Click Add.
-
Enter bookstore6 in the Name field.
-
Click Add URL.
-
Enter *.jsp in the URL Patterns field.
-
Click Edit Preludes.
-
Click Add.
-
Enter /template/prelude.jspf.
-
Click OK.
-
Click Edit Codas.
-
Click Add.
-
Enter /template/coda.jspf.
-
Click OK.
-
-
Add the listener class listeners.ContextListener (described in Handling Servlet Life-Cycle Events, page 441).
-
Select the Event Listeners tab.
-
Click Add.
-
Select the listeners.ContextListener class from the drop-down menu in the Event Listener Classes pane.
-
-
Add a resource reference for the database.
-
Select the Resource Ref's tab.
-
Click Add.
-
Enter jdbc/BookDB in the Coded Name field.
-
Accept the default type javax.sql.DataSource.
-
Accept the default authorization Container.
-
Accept the default selected Shareable.
-
Enter jdbc/BookDB in the JNDI Name field of the Sun-specific Settings frame.
-
-
Select File→Save.
-
Deploy the application.
-
Select Tools→Deploy.
-
In the Connection Settings frame, enter the user name and password you specified when you installed the Application Server.
-
Click OK.
-
A pop-up dialog box will display the results of the deployment. Click Close.
-
Open the URL http://localhost:8080/bookstore6 in a browser.