JSF - Delete Data of a DataTable
Advertisements
In this article, we'll showcase adding deleting capability in datatable
Example Application
Let us create a test JSF application to test the above functionality.
| Step | Description |
|---|---|
| 1 | Create a project with a name helloworld under a package com.tutorialspoint.test as explained in the JSF - Display DataTable sub-chapter of JSF - Data Tables chapter. |
| 2 | Modify home.xhtml as explained below. Keep rest of the files unchanged. |
| 3 | Compile and run the application to make sure business logic is working as per the requirements. |
| 4 | Finally, build the application in the form of war file and deploy it in Apache Tomcat Webserver. |
| 5 | Launch your web application using appropriate URL as explained below in the last step. |
home.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 tutorial</title>
<h:outputStylesheet library="css" name="styles.css" />
</h:head>
<h:body>
<h2>DataTable Example</h2>
<h:form>
<h:dataTable value="#{userData.employees}" var="employee"
styleClass="employeeTable"
headerClass="employeeTableHeader"
rowClasses="employeeTableOddRow,employeeTableEvenRow">
<h:column>
<f:facet name="header">Name</f:facet>
<h:inputText value="#{employee.name}"
size="10" rendered="#{employee.canEdit}" />
<h:outputText value="#{employee.name}"
rendered="#{not employee.canEdit}" />
</h:column>
<h:column>
<f:facet name="header">Department</f:facet>
<h:inputText value="#{employee.department}"
size="20" rendered="#{employee.canEdit}" />
<h:outputText value="#{employee.department}"
rendered="#{not employee.canEdit}" />
</h:column>
<h:column>
<f:facet name="header">Age</f:facet>
<h:inputText value="#{employee.age}" size="5"
rendered="#{employee.canEdit}" />
<h:outputText value="#{employee.age}"
rendered="#{not employee.canEdit}" />
</h:column>
<h:column>
<f:facet name="header">Salary</f:facet>
<h:inputText value="#{employee.salary}"
size="5" rendered="#{employee.canEdit}" />
<h:outputText value="#{employee.salary}"
rendered="#{not employee.canEdit}" />
</h:column>
<h:column>
<f:facet name="header">Delete</f:facet>
<h:commandButton value="Delete"
action="#{userData.deleteEmployee}" />
<f:setPropertyActionListener
target="#{userData.employee}" value="#{employee}" />
</h:commandButton>
</h:column>
</h:dataTable>
</h:form>
</h:body>
</html>
Once you are ready with all the changes done, let us compile and run the application as we did in JSF - First Application chapter. If everything is fine with your application, this will produce following result:
Click delete button of any row.See the result.