Create new JBoss Tools Documentation Jira issue

This will launch the Jboss Tools Jira page - to complete your feedback please login if needed, and submit the Jira.

JBoss.orgCommunity Documentation

JSF Tools Reference Guide

Version: 3.1.0.GA


1. Introduction
1.1. Key Features of JSF Tools
1.2. Other relevant resources on the topic
2. JavaServer Faces Support
2.1. Facelets Support
2.1.1. Facelets templates
2.1.2. Facelets components
2.1.3. Code assist for Facelets
2.1.4. Open On feature
3. Projects
3.1. Creating a New JSF Project
3.2. Importing Existing JSF Projects with Any Structure
3.3. Adding JSF Capability to Any Existing Eclipse Project
3.4. Adding Your Own Project Templates
3.5. Relevant Resources Links
4. Web.xml Editor
5. JSF Configuration File Editor
5.1. Diagram view
5.2. Tree View
5.3. Source View
5.4. Editor Features
5.4.1. Open On
5.4.2. Code Assist
5.4.3. Error Reporting
6. Managed Beans
6.1. Code Generation for Managed Beans
6.2. Add Existing Java Beans to a JSF Configuration File
7. Creation and Registration
7.1. Create and Register a Custom Converter
7.2. Create and Register a Custom Validator
7.3. Create and Register Referenced Beans
8. JSF Project Verification

JSF Tools are especially designed for supporting JSF and JSF-related technologies. JSF Tools provide extensible and exemplary tools for building JSF-based applications as well as adding JSF capabilities to existing web projects, importing JSF projects and choosing any JSF implementation while developing JSF application.

In this guide we provide you with the information on JSF tooling which allows you to develop JSF applications much faster and with far fewer errors so sparing your time.

We don't lock you into any one JavaServer Faces implementation. You can always select the one which is necessary for you while creating a new JSF project, adding JSF capability to any existing Eclipse project or importing existing JSF projects as well.

At this point the special wizard will prompt you to specify a proper JSF environment. It may be JSF 1.1.02 RI or JSF 1.2 which integrates a number of new features and changes. The wizard also lets you select JSF implementation with a component orientation such as JSF 1.2 with Facelets or MyFaces 1.1.4.


After specifying a proper JSF environment all the required libraries for the selected version will be added to your project.

In this section we will focus more on all concepts that are integrated for working with Facelets.

The Facelets extends JavaServer Faces by providing a lightweight framework that radically simplifies the design of presentation pages for JSF. Facelets can be used in a variety of ways that we will consider further in this section.

The JBoss Tools Palette comes with the Facelets components ready to use. A useful tip appears when you hover the mouse cursor over the tag, the tip includes a detailed description of the tag component, the syntax and available attributes.


To take an advantage of JSF firstly you should perform one of the next steps:

  • Create new JSF projects

  • Import (open) existing JSF projects

  • Add JSF capability to any existing Eclipse project

  • Import and add JSF capability to any existing project created outside Eclipse.

In this section we're going to stop on each of them in detail.

If you want your project to already contain all JSF libraries, tag libraries and JSF configuration file, just organize a new brand JSF project. It is possible to do this easily with the help of the special wizard. To get it, select File > New > Project > JBoos Tools Web > JSF > JSF Project and click Next.


On the next form you'll be prompted to enter Project Name and select a location for the project or just leave a default path.

Here, JSF Version also allows you to select which JSF implementation to use.


There is a number of predefined project templates that are flexible and easily customizable. Thus you can pick a different template on which the projects Importing Existing should be based on. Almost all templates come in two variations: with jsf libraries and without ones.


The table below provides description for each possible JSF template.


On the next screen select what Servlet version to use and whether to register this application with JBoss AS (or other server) for running and testing your application.

The Context Path is the name under which the application will be deployed.

The Runtime value tells Eclipse where to find Web libraries in order to build (compile) the project. It is not possible to finish project creation without selecting Runtime. If you don't have any values, select New... to add new Runtime.

The Target Server allows you specifying whether to deploy the application. The Target Server corresponds to the Runtime value selected above. If you don't want to deploy the application, uncheck this value.


When you are all done, you should have the project that has been appeared in the Package Explorer view:


At this point you can open faces-config.xml and start working on your application. There are a lot of features to develop JSF applications. We will describe the features further.

It's also possible to add JSF capability (JSF libraries, tag libraries) to any existing Eclipse project in your workspace. After that you'll be able to make use of such editors as JSF configuration editor, JBoss Tools JSP editor and any others.

Right click the project and select JBoss Tools > Add JSF Capabilities. This will start the process of adding all necessary libraries, files to make this a Web JSF project.


The wizard will first ask you to show the web.xml file location and the project name.


On the last form you can set the different folders for your project as well as register this application with a servlet container.

Make sure to select Add Libraries to add all required JSF related libraries to this project.

The Context Path is the name under which the application will be deployed.

The Runtime value tells Eclipse where to find Web libraries in order to build (compile) the project. It is not possible to finish project import without selecting Runtime. If you don't have any values, select New... to add new Runtime.

The Target Server allows you to specify whether to deploy the application. The Target Server corresponds to the Runtime value selected above. If you don't want to deploy the application, uncheck this value.


Once your project is imported you can see that JSF related libraries have been added to your project: jsf-api.jar and jsf-impl.jar .

Note:

Some application servers provide their own jsf implementation libraries. Thus, to avoid conflicts you should not add jsf libraries while adding jsf capabilities.

You are now ready to work with JSF by creating a new JSF configuration file:


Once the file has been created, it should be opened in a special Faces Config Editor.

Template is a set of files that is served as a basis to facilitate the creation of a new project. Project templates provide content and structure for a project.

There is a powerful templating capability for creating new and importing existing Struts and JSF projects. This templating facility has a variety of aspects to consider. But, let's start with the most straightforward case and consider the process of creating a template from your existing JSF project.

Let's say you have a project that you want to use as the basis for a new template. Follow these steps to make a template out of it:


  • In the first dialog box, you can choose a name for the template (defaults to the project name) and confirm what run-time implementation of the project technology will be used


  • Select Next and you will be sent to a dialog box with your project structure displayed with check boxes. Here you can check only those parts and files in your project directory that should be part of the template


  • At this point, unless you want to designate some extra files as having Velocity template coding inside them, you should click Finish .

That's it. Now, you can use this template with any new or imported project that uses the same run-time implementation as the project you turned into a template.

At this point, you have a fully configured project and now you can bring some new logic to it starting from JSF configuration file.

The web.xml file inside the WEB-INF folder is a deployment descriptor file for a Web Application. It describes the servlets and other components and deployment properties that make up your application.

JBoss Tools add the web.xml file to created JSF project automatically and provides a special editor for its editing. See the Visual Web Tools guide that gives a descriptive information on the web.xml editor.

First, we should mention that JSF configuration file ( faces-config.xml ) is intended for registering JSF application resources such as Converters, Validators, Managed Beans and page-to-page navigation rules.

Now, let's look at how you can easily configure this file by means of a special graphical editor for JSF configuration file. The editor has three main views:

  • Diagram

  • Tree

  • Source

They can be selected via the tabs at the bottom of the editor.

You can find it more convenient to edit your JSF Configuration file in the Tree view of the VPE.

The view displays all JSF application artifacts referenced in the configuration file in a tree format. By selecting any node on the left, you can see and edit its properties which will appear in the right-hand area. Let's look at the structure of this tree more closely.


  • The Components node is for registering custom JSF components. Right-click and choose New > Component or just press the Add button in the right-hand area to add a new component to the JSF Configuration file.


In the Add Component wizard you should set a component type and point to a component class by using the Browse button or create a new class for this component by using the Component-Class link.


  • Use the Render Kit node to create and register a set of related renderers for custom JSF components.




  • Use the Navigation Rules node to configure a navigation between the pages in your application: create a new navigation rule and adjust necessary properties for it in the right-hand area.

Tip:

The same you can do in the Diagram view of the JSF Configuration file editor.




  • The Extensions node is for setting extensions for your faces-config.xml.


In the Tree view you can also edit the properties of the selected element with the help of the Properties view as shown below:


There is lots of power to work with managed beans.

  • Add and generate code for new managed beans

    • Generate code for attributes and getter/setter methods

  • Add existing managed beans to JSF configuration file

Thus, in this section we will guides you through all this possibilities.

In this chapter we'll discuss a possible verification that you can take advantage of.

Many different rules are checked for a JSF project that can be configured by selecting Window > Preferences from the menu bar, selecting JBoss Tools > Web > Verification from the Preferences dialog box and then expanding the JSF Rules node.


Suppose you are working in the Source viewer for a JSF configuration file as shown below:


While typing a class name, you might make a minor typo (like "jsfHello.PersonBean9" instead of "jsfHello.PersonBean" ). After saving the file, verification checks to make sure everything is correct and finds the error below:


Notice that the Package Explorer View shows a marked folder and a marked file where the error is.

You can place the cursor over the line with an error message and get a detailed error message:


Verification also checks navigation rules:


If you provide a page name that does not exist, verification will let you know about that:


You can always call up verification explicitly by right-clicking any element in the tree and selecting Verify from the context menu. This works from both the Tree and Diagram viewers for the JSF configuration file editor. You can also invoke verification from the Web Projects view. Below we are checking all of the elements in the configuration file.


In summary, this document highlights all the JSF-specific features of JBoss Tools meant for enhancing the development of rich Web applications based on JSF technology. The reference introduces you to wizards for creating and importing JSF projects, JSF Configuration File editor features, functionality for enabling JSF capabilities and etc.

If you have questions or good suggestions, please refer to JBoss Tools Forum.