Welcome to JSF Tutorial. Java Server Faces (JSF) technology is a front end framework which makes the creation of user interface components easier by reusing the UI components. JSF is designed based on the Model View Controller pattern (MVC) which segregates the presentation, controller and the business logic.
Recently I have written a lot of JSF tutorial, so this JSF Tutorial is the index post where you can go through all the tutorials in order to learn JSF framework.
Most of these JSF tutorials come with downloadable project zip that you can use and make some changes to learn by examples.
This is the perfect tutorial to start with JSF framework. You will get all the basic details and create your very first Maven based “Hello World” JSF project. If you have basic knowledge of JSF framework, you can skip it. However it’s always best way to start with the beginners tutorial and then learn more features.
Primefaces is one of the most popular implementation of JSF specifications, we have published a lot of posts on Primefaces but this one covers JSF architecture as well. I think you should go through it to understand that we can use other JSF implementations as well for creating good UI based projects.
This is a getting started post for JSF view pages, you will learn how to add simple components such as labels, images, buttons etc. and bind them with the backend managed bean easily.
The phenomenon of storing the UI labels, date, status messages and other UI textual elements in a separate properties file instead of hardcoding these in a page is called resource bundling.
By default JSF provides some standard error messages depending on the context like say field type or field length validations. This tutorial explains about using Resource Bundles in your projects for localization and how you can provide custom messages for the standard JSF error messages using resource bundle files.
In this post you will learn how to use the default JSF validators to shoot out the built in error messages to the users. You will also get a brief glimpse of JSF HTML tags in use.
Page navigation is the redirection of a page based on the events performed for instance – on click of a button or on click of a link.
There are many ways of defining page navigation. These include “Specifying the page name in the action attribute of the submit button”, “Indicate the page in the managed bean”, “Specify the navigations in faces-config.xml” and “Define the navigations based on the conditions” and you will learn about these with examples.
JSF is a component based framework, the power of JSF is the component tags that integrates with the managed beans easily. This post explains about the different attributes used in the JSF HTML tags such as id, for, value, style required, size etc.
Form component is a collection of fields along with the data and submit functionality to be sent to the model implementing the business scenario. Form components are used a lot in JSF because most of the web applications work with user submitted data, such as login, register, insert or update values in the database etc. This post explains how to use the form components in the JSF pages and their different attributes with example project.
JSF Text components allows the user to add, view and edit data in a form of a web application. JSF text components include label, text field, text area and password. You will learn about the usage of these tags with example project in this post.
JSF Command components are used for performing action and navigation in the JSF pages. This post explains about the h:commandButton and h:commandLink tags with example project.
The data bound table components are responsible for displaying the relational data in a tabular format. The h:dataTable tag is used for displaying the data components. The h:column tag iterates over each record in the data source displayed in rows. This is a very important component tag and you should understand it’s usage and working carefully through the example project in the post.
JSF allows users to select multiple values for a single field with the help of h:selectManyListBox tag which corresponds to select tag in standard HTML. This post explains it’s usage and different attributes of this tag with a working example.
JSF provides a special set of tags that gives the flexibility to manage common tags/parts in one place for more than one application. These tags allow us to create a common layout that can be used across applications. These are called facelets tags and this post explains about different facelets tags in detail with working example code.
JSF Event and Listener model is based on the JavaBeans Specification. An event is defined as a signal triggered based upon the user actions such as click of button, hyperlink, changing the input value etc. JSF tells the component to invoke the appropriate listener class that process the event generated by the user. This article explains about different events with example projects.
Form validations are common features in almost all web frameworks. JSF validation model defines a set of standard classes for validating the UI components. The JSF library defines a group of core tags that corresponds to
javax.faces.validator.Validatorimplementations. Apart from the standard error messages validation model allows us to define the custom validations. Validations in JSF can be categorized into Imperative and Declarative.
Navigation rules specifies the navigation between the pages on click of button or hyperlink. Navigation can be specified in terms of the logical outcome such as success, failure or through action method. Navigation rules can be specified in faces-config.xml with the help of navigation-rule tag.
Navigations can also be handled in JSF by writing methods in the managed bean. These methods should be public, take no parameters and should returns an object or a view name. The method is invoked in the action attribute of the JSF page. You will learn about this way of navigation through example project in the post.
JSF Expression Language enables users to access the data dynamically from the JavaBeans components using various expressions. The EL supports the following kinds of expressions – Immediate value expressions or Deferred value expressions, Value expression or method expression and rvalue or lvalue expressions. Check out this post to understand about these in detail with example code.
Authentication mechanism allows users to have secure access to the application by validating the username and password. This tutorial shows you how to build session management with authentication in JSF application by using JSF view for login, DAO object, HttpSession for session management and JSF managed bean and mysql database.
Java Server Faces can be connected to database to perform operations on the data using JDBC API. This is a simple post where you will learn how to use JDBC API in a JSF based web application.
JSF is a component based framework with great focus on user interfaces. Whereas Spring framework core principle is Dependency Injection. So it makes sense to integrate JSF with Spring framework where JSF will be used for user interfaces and Spring framework will be used for backend server side business logic.
This is an important article where you will learn how to integrate both these great frameworks and using the best features of each one.
JSF, Spring Framework and Hibernate – these three frameworks can be used together to build stunning web application where JSF components provide stunning UI, Spring components provide loose coupling through dependency injection and Hibernate takes care of interaction with database.
Finally if you are going to an interview and expecting JSF interview questions, then make sure you go through there. There are more than 50 questions with detailed answers that touch all the areas of JSF framework and help you in getting ready for the interview.
That’s all for the index post of JSF tutorial, I will be adding more to the list as and when I write more articles on JSF tutorials. If you think that I have missed some important feature of JSF, then please let me know through comments below and I will try to post on that and include that to the list here.