JSF - Visualizza tabella dati
Il tag h: dataTable viene utilizzato per visualizzare i dati in modo tabulare.
Tag JSF
<h:dataTable value = "#{userData.employees}" var = "employee"
styleClass = "employeeTable"
headerClass = "employeeTableHeader"
rowClasses = "employeeTableOddRow,employeeTableEvenRow">
<h:column>
<f:facet name = "header">Name</f:facet>
#{employee.name}
</h:column>
<h:column>
<f:facet name = "header">Department</f:facet>
#{employee.department}
</h:column>
<h:column>
<f:facet name = "header">Age</f:facet>
#{employee.age}
</h:column>
<h:column>
<f:facet name = "header">Salary</f:facet>
#{employee.salary}
</h:column>
</h:dataTable>
Output renderizzato
<table class = "employeeTable">
<thead>
<tr>
<th class = "employeeTableHeader" scope = "col">Name</th>
<th class = "employeeTableHeader" scope = "col">Department</th>
<th class = "employeeTableHeader" scope = "col">Age</th>
<th class = "employeeTableHeader" scope = "col">Salary</th>
</tr>
</thead>
<tbody>
<tr class = "employeeTableOddRow">
<td>John</td>
<td>Marketing</td>
<td>30</td>
<td>2000.0</td>
</tr>
<tr class = "employeeTableEvenRow">
<td>Robert</td>
<td>Marketing</td>
<td>35</td>
<td>3000.0</td>
</tr>
</table>
Attributi dei tag
S.No | Attributo e descrizione |
---|---|
1 | id Identificatore di un componente |
2 | rendered Un booleano; false sopprime il rendering |
3 | dir Direzione per il testo. I valori validi sonoltr (da sinistra a destra) e rtl (da destra a sinistra) |
4 | styleClass Nome della classe CSS (Cascading stylesheet) |
5 | value Il valore di un componente, in genere un'associazione di valori |
6 | bgcolor Colore di sfondo per il tavolo |
7 | border Larghezza del bordo della tabella |
8 | cellpadding Riempimento attorno alle celle della tabella |
9 | cellspacing Spaziatura tra le celle della tabella |
10 | columnClasses Elenco separato da virgole di classi CSS per le colonne |
11 | first Indice della prima riga mostrato nella tabella |
12 | footerClass Classe CSS per il piè di pagina della tabella |
13 | frame Deve essere tracciata la specifica per i lati del telaio che circonda il tavolo; valori validi: nessuno, sopra, sotto, hsides, vsides, lhs, rhs, box, border |
14 | headerClass Classe CSS per l'intestazione della tabella |
15 | rowClasses Elenco separato da virgole di classi CSS per le righe |
16 | rules Specifica per linee tracciate tra le celle; valori validi: gruppi, righe, colonne, tutto |
17 | summary Riepilogo dello scopo e della struttura della tabella utilizzata per il feedback non visivo come il parlato |
18 | var Il nome della variabile creata dalla tabella dati che rappresenta l'elemento corrente nel valore |
19 | title Un titolo, utilizzato per l'accessibilità, che descrive un elemento. I browser visivi in genere creano suggerimenti per il valore del titolo |
20 | width Larghezza di un elemento |
21 | onblur L'elemento perde la concentrazione |
22 | onchange Il valore dell'elemento cambia |
23 | onclick Si fa clic sul pulsante del mouse sull'elemento |
24 | ondblclick Si fa doppio clic sul pulsante del mouse sull'elemento |
25 | onfocus L'elemento riceve il fuoco |
26 | onkeydown Viene premuto il tasto |
27 | onkeypress Il tasto viene premuto e successivamente rilasciato |
28 | onkeyup La chiave viene rilasciata |
29 | onmousedown Il pulsante del mouse viene premuto sull'elemento |
30 | onmousemove Il mouse si sposta sull'elemento |
31 | onmouseout Il mouse lascia l'area dell'elemento |
32 | onmouseover Il mouse si sposta su un elemento |
33 | onmouseup Il pulsante del mouse viene rilasciato |
Applicazione di esempio
Creiamo un'applicazione JSF di prova per testare il tag precedente.
Passo | Descrizione |
---|---|
1 | Crea un progetto con un nome helloworld sotto un pacchetto com.tutorialspoint.test come spiegato nel sottocapitolo JSF - h: outputStylesheet del capitolo JSF - Tag di base . |
2 | Modificare styles.css come spiegato di seguito. |
3 | Crea Employee.java nel pacchetto com.tutorialspoint.test come spiegato di seguito. |
4 | Creare UserData.java come bean gestito nel pacchetto com.tutorialspoint.test come spiegato di seguito. |
5 | Modifica home.xhtml come spiegato di seguito. Mantieni invariato il resto dei file. |
6 | Compilare ed eseguire l'applicazione per assicurarsi che la logica aziendale funzioni secondo i requisiti. |
7 | Infine, crea l'applicazione sotto forma di file war e distribuiscila in Apache Tomcat Webserver. |
8 | Avvia la tua applicazione web utilizzando l'URL appropriato come spiegato di seguito nell'ultimo passaggio. |
styles.css
.employeeTable {
border-collapse:collapse;
border:1px solid #000000;
}
.employeeTableHeader {
text-align:center;
background:none repeat scroll 0 0 #B5B5B5;
border-bottom:1px solid #000000;
padding:2px;
}
.employeeTableOddRow {
text-align:center;
background:none repeat scroll 0 0 #FFFFFFF;
}
.employeeTableEvenRow {
text-align:center;
background:none repeat scroll 0 0 #D3D3D3;
}
Employee.java
package com.tutorialspoint.test;
public class Employee {
private String name;
private String department;
private int age;
private double salary;
private boolean canEdit;
public Employee (String name,String department,int age,double salary) {
this.name = name;
this.department = department;
this.age = age;
this.salary = salary;
canEdit = false;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
public boolean isCanEdit() {
return canEdit;
}
public void setCanEdit(boolean canEdit) {
this.canEdit = canEdit;
}
}
UserData.java
package com.tutorialspoint.test;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
@ManagedBean(name = "userData", eager = true)
@SessionScoped
public class UserData implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
private String dept;
private int age;
private double salary;
private static final ArrayList<Employee> employees
= new ArrayList<Employee>(Arrays.asList(
new Employee("John", "Marketing", 30,2000.00),
new Employee("Robert", "Marketing", 35,3000.00),
new Employee("Mark", "Sales", 25,2500.00),
new Employee("Chris", "Marketing", 33,2500.00),
new Employee("Peter", "Customer Care", 20,1500.00)
));
public ArrayList<Employee> getEmployees() {
return employees;
}
public String addEmployee() {
Employee employee = new Employee(name,dept,age,salary);
employees.add(employee);
return null;
}
public String deleteEmployee(Employee employee) {
employees.remove(employee);
return null;
}
public String editEmployee(Employee employee) {
employee.setCanEdit(true);
return null;
}
public String saveEmployees() {
//set "canEdit" of all employees to false
for (Employee employee : employees) {
employee.setCanEdit(false);
}
return null;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
}
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>
#{employee.name}
</h:column>
<h:column>
<f:facet name = "header">Department</f:facet>
#{employee.department}
</h:column>
<h:column>
<f:facet name = "header">Age</f:facet>
#{employee.age}
</h:column>
<h:column>
<f:facet name = "header">Salary</f:facet>
#{employee.salary}
</h:column>
</h:dataTable>
</h:form>
</h:body>
</html>
Una volta che sei pronto con tutte le modifiche apportate, compiliamo ed eseguiamo l'applicazione come abbiamo fatto nel capitolo JSF - Prima applicazione. Se tutto va bene con la tua applicazione, questo produrrà il seguente risultato.