Jsf datatable get row index example

 
To display data table row number or get row index we have to use getRowIndex() method of javax.faces.model.DataModel class.
 

Example:

test.xhtml

<?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:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core">
	<h:head>
		<title>JSF display data table example.</title>
	</h:head>
    <h:body>
    	<h2>JSF display data table example.</h2>
    	<h:form>
      <h:dataTable value="#{test.students}" var="student">
         <h:column>    				
            <f:facet name="header">Sr. No.</f:facet>    				
            #{test.students.rowIndex + 1}
         </h:column>
         <h:column>    				
            <f:facet name="header">Name</f:facet>    				
            #{student.name}
         </h:column>
         <h:column>
            <f:facet name="header">Class</f:facet>
            #{student.stuClass}
         </h:column>
         <h:column>
            <f:facet name="header">RollNo</f:facet>
            #{student.rollNo}
         </h:column>
        <h:column>
            <f:facet name="header">Age</f:facet>
            #{student.age}
         </h:column>
      </h:dataTable>
   </h:form>
    </h:body>
 
</html>

Test.java

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.model.ArrayDataModel;
import javax.faces.model.DataModel;
 
/**
 * Backing bean.
 * @author w3schools
 */
@ManagedBean(name = "test")
@SessionScoped
public class Test {
	public static final Student[] students =  new Student[] {
		new Student("Vivek","MCA 3rd","MCA/07/40",29),
		new Student("Sunil","MCA 3rd","MCA/07/41",33),
		new Student("Bharat","MCA 3rd","MCA/07/42",27),
		new Student("Richi","MCA 3rd","MCA/07/43",28),
		new Student("Sahdev","MCA 3rd","MCA/07/44",28)
	};
 
	private DataModel<Student> studentDataModel = 
		new ArrayDataModel<Student>(students);
 
	public DataModel<Student> getStudents() {
		return studentDataModel;
	}
}

Student.java

/**
 * Managed Bean.
 * @author w3schools
 */
public class Student {
	private String name;
	private String stuClass;
	private String rollNo;
	private int age;	
 
	public Student(String name, 
			String stuClass, String rollNo, int age) {
		this.age = age;
		this.name = name;
		this.rollNo = rollNo;
		this.stuClass = stuClass;
	}
 
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getStuClass() {
		return stuClass;
	}
	public void setStuClass(String stuClass) {
		this.stuClass = stuClass;
	}
	public String getRollNo() {
		return rollNo;
	}
	public void setRollNo(String rollNo) {
		this.rollNo = rollNo;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
}

faces-config.xml

<?xml version="1.0" encoding="windows-1252"?>
<faces-config version="2.0" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xi="http://www.w3.org/2001/XInclude" 
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_2_0.xsd">
 
</faces-config>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
    	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-app_3_0.xsd">
 
    <servlet>
        <servlet-name>faces</servlet-name>
        <servlet-class>
         javax.faces.webapp.FacesServlet
	<servlet-mapping>
        <servlet-name>faces</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>
 
</web-app>

URL:

http://localhost:7001/JSFExample45/faces/test.xhtml

Output:

JSF example45-1
 
Download this example.