Guide‎ > ‎JSF 2.0‎ > ‎

4. Getting Started - Simple Form Entry with Manged bean Action in JSF 2.0

Adding Constructor for New Object Creation

create new empty constructor in Person Class
Person() {        
    }
Create New Object for Data Model Class
Object Declartion:
Person person;
Object Intiralization with in Conctructor:
person = new Person();
Declare Getter and Setter Method for this Object.

Full Code of Data Model Class

package com.thiyagaraaj.example;

/**
 *
 * @author thiyagaraaj
 * @webiste little drops @ thiyagaraaj.com
 */
public class Person {
    String Name;
    String No;
    String Address;    

    Person() {        
    }

    public Person(String Name, String No, String Address) {
        this.Name = Name;
        this.No = No;
        this.Address = Address;
    }

    public String getAddress() {
        return Address;
    }

    public void setAddress(String Address) {
        this.Address = Address;
    }

    public String getName() {
        return Name;
    }

    public void setName(String Name) {
        this.Name = Name;
    }

    public String getNo() {
        return No;
    }

    public void setNo(String No) {
        this.No = No;
    }             
}

Create Action Function in Managed bean Class

Action Method Declation:
public String addPersion() {
personList.add(person);
person = new Person();
return "Success";
}
Full Code of Managed bean Class
package com.thiyagaraaj.example;

import com.thiyagaraaj.example.Person;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;


/**
*
* @author thiyagaraaj
* @webiste little drops @ thiyagaraaj.com
*/
@ManagedBean
@SessionScoped
public class PersonController {


Person person;
List<Person> personList = new ArrayList<Person>();


/** Creates a new instance of PersonController */
public PersonController() {
person = new Person();
personList.add(new Person("Google", "1", "Search Engine"));
personList.add(new Person("Windows", "2", "Operating System"));
personList.add(new Person("Oracle", "3", "Database"));
personList.add(new Person("Facebook", "4", "Social Networking"));
}


public String addPersion() {
System.out.println("Inside Action");
personList.add(person);
person = new Person();
return "Success";
}


// Getter and Setter Methods
public List<Person> getPersonList() {
return personList;
}


public void setPersonList(List<Person> personList) {
this.personList = personList;
}


public Person getPerson() {
return person;
}


public void setPerson(Person person) {
this.person = person;
}
}

Modify Facelet Page (XHTML) for Backing Bean Variables

<h:outputText value="Name" />
<p:inputText value="#{personController.person.name}"/>
<h:outputText value="No" />
<p:inputText value="#{personController.person.no}"/>
<h:outputText value="Address" />
<p:inputText value="#{personController.person.address}"/>
Call Action From Faclets to Managed Bean
Replace Existing Command Button code to this.
<p:commandButton value="Finish" action="#{personController.addPersion()}" ajax="false" />

Full Code of Facelet View Page

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:p="http://primefaces.prime.com.tr/ui"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
        <h:form>
            <p:panel header="Simple Form in JSF 2.0 - little drops @ thiyagaraaj.com">
                <h:panelGrid columns="2">
                    <h:outputText value="Name" />  
                    <p:inputText value="#{personController.person.name}"/>
                    <h:outputText value="No" />                      
                    <p:inputText value="#{personController.person.no}"/>
                    <h:outputText value="Address" />  
                    <p:inputText value="#{personController.person.address}"/>

                </h:panelGrid>
                <f:facet name="footer">                        
                    <p:commandButton value="Finish" action="#{personController.addPersion()}" ajax="false" />
                </f:facet>
            </p:panel>

            <p:separator/>
            <p:dataTable value="#{personController.personList}" var="person">
                <p:column>
                    <f:facet name="header">Name</f:facet>  
                    <h:outputText value="#{person.name}"/>
                </p:column> 
                <p:column>
                    <f:facet name="header">Number</f:facet>  
                    <h:outputText value="#{person.no}"/>
                </p:column> 
                <p:column>
                    <f:facet name="header">Address</f:facet>  
                    <h:outputText value="#{person.address}"/>
                </p:column> 
            </p:dataTable>
        </h:form>
    </h:body>
</html>
Sample Outputs: