| Free tutorials for Java, Eclipse and Web programming |
Version 1.2
Copyright © 2008 - 2010 Lars Vogel
15.03.2010
| Revision History | ||
|---|---|---|
| Revision 0.1 | 26.02.2008 | Lars Vogel |
| Started article | ||
| Revision 0.2 | 15.10.2008 | Lars Vogel |
| Continued | ||
| Revision 0.3 | 12.11.2008 | Lars Vogel |
| Clean-up work | ||
| Revision 0.3.1 | 21.11.2008 | Lars Vogel |
| Typo correction | ||
| Revision 0.4 | 22.11.2008 | Lars Vogel |
| Extended the ToDo example | ||
| Revision 0.5 | 25.05.2009 | Lars Vogel |
| Small adjustments | ||
| Revision 0.6 | 15.09.2009 | Lars Vogel |
| Typo corrected | ||
| Revision 0.7 | 07.10.2009 | Lars Vogel |
| improved JSF overview | ||
| Revision 0.8 | 17.11.2009 | Lars Vogel |
| Fixed missing download link for JSF | ||
| Revision 0.9 | 19.11.2009 | Lars Vogel |
| Update to Eclipse 3.5 | ||
| Revision 1.0 | 27.01.2010 | Lars Vogel |
| Clean-up, added JSTL library | ||
| Revision 1.1 | 04.02.2010 | Lars Vogel |
| typos corrected | ||
| Revision 1.2 | 15.03.2010 | Lars Vogel |
| minor re-work | ||
JavaServer Faces with Eclipse
This article describes how to develop JavaServer Faces web applications with Eclipse WTP JSF tooling. It demonstrates managed beans, validators, external resource bundles and the JSF navigation concept.
This tutorial was developed with Java 1.6, JavaServerFaces 1.2, the Apache MyFaces JSF implementation, Tomcat 6.0 and Eclipse 3.5.
Table of Contents
JavaServer Faces (JSF) is a UI component based Java Web application framework. JSF is serverbased, e.g. the JSF UI components and their state are represented on the server with a defined life-cycle of the UI components. JSF is part of the Java EE standard.
A JSF application run in a standard web container, for example Tomcat or Jetty .
This articles provides an introduction to JSF using only standard JSF features. For the usage of special Apache Trinidad features please see Apache Myfaces Trinidad with Eclipse - Tutorial .
A JSF application consists of web pages with JSF UI components. A JSF application requires also some configuration files ("faces-config.xml" and "web.xml").
The faces-config.xml defines:
Managed Bean - the data elements of the JSF application (managed beans and backing beans) Represents a Java class which will be created dynamically during runtime of the JSF application. It can be defined for which scope the bean is valid (Session, Request, Application or none).
the navigation between web pages
data validators - Used to check the validity of UI input
data converters -Used to translate between UI and model
Managed beans are simple Java objects (POJO's) which are declared in "faces-config.xml" and can be used in an JSF application. For example you can define a Java object "Person". Once you define the object in faces-config.xml you can use the attributes of Person in your JSF UI components, e.g. by binding the value "firstName" of this object to an JSF input field.
JSF uses the Unified Expression Language (EL) to bind UI components to object attributes or methods.
In JSF you can access the values of a managed bean via value binding. For value binding the universal Expression Language (EL) is used (to access bean and / or methods). In JSF you do not need to specify the get() or set() method but just the variable name.
Method binding can be used to bind a JSF component, e.g. a button to an method of a Java class.
To use JSF you need:
JSF Implementation (in the form of the JSF jars)
The JSTL tags library
A Java runtime environment
A web-container to use JSF in (for example Tomcat)
JSP has the following main features:
JSP is based on the Model-View-Controller concept
JSP has a stateful UI component model, e.g. each component is aware of its data
JSF separates the functionality of a component from the display of the component. The renderer is responsible of displaying the component for a certain client. This renderer can get exchanged. The standard renderer for JSF components is the HTML renderer.
JSP support listeners on UI components
JSP support data validation, data binding and data conversion between the UI and the model