Tutorial: Creating JavaServer Faces JSF application in Eclipse

Let us see how to create a simple application using JavaServer Faces or JSF framework in Eclipse IDE. First let us see what are the tools required to create our hello world JSF application.
  1. JDK 1.5 above (download)
  2. Tomcat 5.x above or any other container (Glassfish, JBoss, Websphere, Weblogic etc) (download)
  3. Eclipse 3.2.x above (download)
  4. Sun Reference Implementation of JSF: (download). Following are the list of JAR files required for this application.
    • jsf-impl.jar
    • jsf-api.jar
    • jstl.jar
    • common-logging.jar
    • common-beanutils.jar
    • common-collections.jar
    • common-chain.jar
    • common-digester.jar
We will implement a JSF application with an Add User screen with two fields, ID and User Name. Once user enter these values and press submit, she will be redirected to a welcome page displaying the user name. Let us start with our first JSF based web application.

Step 1: Create Dynamic Web project

Open Eclipse and goto File -> New -> Project and select Dynamic Web Project in the New Project wizard screen. Select Dynamic Web application and click Next. Write the name of the project HelloWorldJSF. Once this is done, select the target runtime environment (e.g. Apache Tomcat v6.0). This is to run the project inside Eclipse environment. In configuration select JavaServer Faces v1.2 Project and press Next. [ad#blogs_content_inbetween] On Project Facets window, select Java 5 and JSF 1.2 and press Next. Skip Web module window and press Next. Select JSF component library. Click New in Component Libraries and add jstl.jar, jsf-api.jar and jsf-impl.jar. In URL Mapping Patterns add /faces/* and then click Finish. Once the project is created, you can see its structure in Project Explorer.

Step 2: Create Package and Managed bean

Create a package net.viralpatel.jsf.helloworld in the source folder and create a Java file UserBean.java. Copy following content into UserBean.java.
package net.viralpatel.jsf.helloworld; public class UserBean { private int id; private String name; //Action method to add user public String addUser() { return "success"; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
Code language: Java (java)
Above Java class is a User bean that we will use to store our user’s information. This class acts like a form bean and action class. The addUser() method will get called when we click Add button on our Add User page.

Step 3: Create JSP files

Create two JSP files: AddUser.jsp and ListUser.jsp in WebContent folder. Copy following content in each of these files.

AddUser.jsp

[ad#blogs_content_inbetween]
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%> <%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%> <html> <head> <title>Add New User Form</title> </head> <body> <f:view> <p> <h:message id="errors" for="User_ID" style="color:red"/> </p> <h:form> <h:panelGrid border="1" columns="2"> <h:outputText value="ID"></h:outputText> <h:inputText id="User_ID" value="#{userBean.id}" required="true"> <f:validateLongRange minimum="1" maximum="500"/> </h:inputText> <h:outputText value="Name"></h:outputText> <h:inputText value="#{userBean.name}"></h:inputText> <h:commandButton action="#{userBean.addUser}" value="Add Customer"></h:commandButton> </h:panelGrid> </h:form> </f:view> </body> </html>
Code language: HTML, XML (xml)
We have added a validation rule for ID using f:validateLongRange tag and required=”true” attribute. The ID must be in between 1 and 500.

ListUser.jsp

<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%> <%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%> <html> <head> <title>List of Users</title> </head> <body> <f:view> <h:form> <h:outputText value="User #{userBean.name} is added successfully."> </h:outputText> </h:form> </f:view> </body> </html>
Code language: HTML, XML (xml)

Step 4: Modify faces-config.xml file Open faces-config.xml from WebContent -> WEB-INF folder and copy following content into it.
<?xml version="1.0" encoding="UTF-8"?> <faces-config xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd" version="1.2"> <managed-bean> <managed-bean-name>userBean</managed-bean-name> <managed-bean-class> net.viralpatel.jsf.helloworld.UserBean </managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean> <navigation-rule> <display-name>AddUser</display-name> <from-view-id>/AddUser.jsp</from-view-id> <navigation-case> <from-outcome>success</from-outcome> <to-view-id>/ListUser.jsp</to-view-id> </navigation-case> </navigation-rule> </faces-config>
Code language: HTML, XML (xml)
In faces config we have defined a managed bean UserBean with scope session and mapping from AddUser.jsp to ListUser.jsp.

Step 5: Execute and run the project

Final step is to execute the project and view it in browser. For this, right click on Project Name in Project Explorer -> Run As -> Run on Server (Shortcut Alt+Shift+X, R). [ad#blogs_content_inbetween] Once you enter ID and Username and press Add User, following success screen will appear.

Download complete WAR file with source

Download WAR with Source (1.48 MB) Next >> JavaServer Faces JSF Validation Tutorial: Error Handling in JSF.

View Comments

  • The last screen shot of the browser still has AddUser.jsp as the URL instead of ListUser.jsp. This creates confusion.

  • Hi Navier,
    JSF uses internal FORWARD instead of REDIRECT to navigate to the success page. Hence the URL will not get changed.

  • Well, it uses forward "by default". Just add a "redirect" tag to your navigation handler in faces-config.xml and there you are .... No more confusion (but you loose requestMap parameters, in case you use them or FacesMessages).

    Eduard

  • Thanks for the comment Nishant. You may want to subscribe your email for the Articles.

  • hiiii viral great example .. i understood well bt wanna know more abt jsf..
    could u jst forward me one simple application using jsf ..
    Thanks

Share
Published by
Viral Patel
Tags: framework JavaServer Faces Tutorial validation framework

Recent Posts

  • Java

Java URL Encoder/Decoder Example

Java URL Encoder/Decoder Example - In this tutorial we will see how to URL encode/decode…

4 years ago
  • General

How to Show Multiple Examples in OpenAPI Spec

Show Multiple Examples in OpenAPI - OpenAPI (aka Swagger) Specifications has become a defecto standard…

4 years ago
  • General

How to Run Local WordPress using Docker

Local WordPress using Docker - Running a local WordPress development environment is crucial for testing…

4 years ago
  • Java

Create and Validate JWT Token in Java using JJWT

1. JWT Token Overview JSON Web Token (JWT) is an open standard defines a compact…

4 years ago
  • Spring Boot

Spring Boot GraphQL Subscription Realtime API

GraphQL Subscription provides a great way of building real-time API. In this tutorial we will…

4 years ago
  • Spring Boot

Spring Boot DynamoDB Integration Test using Testcontainers

1. Overview Spring Boot Webflux DynamoDB Integration tests - In this tutorial we will see…

5 years ago