Moving Between JSF Views

In addition to the main functionality, the sample application lets the user edit preferences through a separate set of screens. The application ignores all preference settings, but looking at how these preferences screens are implemented illustrates how JSF navigation works.

On a regular web site, links are used to navigate between different pages. A JSF web application may also use links, and there’s a special action element that you should use to add a link to a page. It’s the <h:outputLink> action element, and here’s how it’s used in the sample application’s menu area:

...
  <h:outputLink value="prefUser.faces">
    <h:outputText value="Preferences" />
  </h:outputLink>
...

The action uses the value attribute to render the corresponding HTML <a> element’s href value, with an encoded session ID if needed for cookie-less session tracking. Nested <f:param> action elements can be used to add query string parameters (see Appendix A for details). The link text is taken from the value of one or more child components, such as the output component represented by the <h:outputText> element in this example. Figure 9-1 shows the menu area with the generated link in a browser.

Menu area with link to the first preferences screen
Figure 9-1. Menu area with link to the first preferences screen

Navigation through a direct link is simple and sufficient in many cases, but not when user input must be processed before moving on to the next ...

Get JavaServer Faces now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.