Exemple de tri JSF 2 dataTable

Exemple de tri de table de données JSF 2

Voici l'idée de trier une liste de tables de données JSF:

1. En-tête de colonne

Mettez un lien de commande dans l'en-tête de la colonne, si ce lien est cliqué, triez la liste dataTable.


    
        
           Order No
        
    
    #{o.orderNo}

2. la mise en oeuvre

Dans le bean géré, utiliseCollections.sort() et un comparateur personnalisé pour trier la liste.

@ManagedBean(name="order")
@SessionScoped
public class OrderBean implements Serializable{

    //sort by order no
    public String sortByOrderNo() {

       Collections.sort(orderArrayList, new Comparator() {

        @Override
        public int compare(Order o1, Order o2) {

            return o1.getOrderNo().compareTo(o2.getOrderNo());

        }
       });
    }
    //...
}

Exemple de tri de dataTable

Un exemple JSF 2.0 pour implémenter lessorting feature in dataTable. Cliquez sur l'en-tête de colonne «N ° de commande» pour faire l'ordre de la liste par «N ° de commande» dans l'ordre croissant; Cliquez à nouveau dessus, faites l'ordre de la liste par «N ° de commande» dans l'ordre décroissant.

1. Bean géré

Un bean géré pour fournir une liste fictive pour les tests, et montre l'utilisation deCollections.sort() to sort the dataTable list.

package com.example;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean(name="order")
@SessionScoped
public class OrderBean implements Serializable{

    private static final long serialVersionUID = 1L;

    private List orderArrayList;

    private boolean sortAscending = true;

    private static final Order[] orderList = {
        new Order("A0002", "Harddisk 100TB",
                new BigDecimal("500.00"), 3),
        new Order("A0001", "Intel CPU",
                new BigDecimal("4200.00"), 6),
        new Order("A0004", "Samsung LCD",
                new BigDecimal("5200.00"), 10),
        new Order("A0003", "Dell Laptop",
                new BigDecimal("11600.00"), 9),
        new Order("A0005", "A4Tech Mouse",
                new BigDecimal("200.00"), 20)
    };

    public OrderBean(){

        orderArrayList = new ArrayList(Arrays.asList(orderList));

    }

    public List getOrderList() {

        return orderArrayList;

    }

    //sort by order no
    public String sortByOrderNo() {

       if(sortAscending){

        //ascending order
        Collections.sort(orderArrayList, new Comparator() {

            @Override
            public int compare(Order o1, Order o2) {

                return o1.getOrderNo().compareTo(o2.getOrderNo());

            }

        });
        sortAscending = false;

       }else{

        //descending order
        Collections.sort(orderArrayList, new Comparator() {

            @Override
            public int compare(Order o1, Order o2) {

                return o2.getOrderNo().compareTo(o1.getOrderNo());

            }

        });
        sortAscending = true;
       }

       return null;
    }

    public static class Order{

        String orderNo;
        String productName;
        BigDecimal price;
        int qty;

        public Order(String orderNo, String productName,
                BigDecimal price, int qty) {
            this.orderNo = orderNo;
            this.productName = productName;
            this.price = price;
            this.qty = qty;
        }

        public String getOrderNo() {
            return orderNo;
        }

        public void setOrderNo(String orderNo) {
            this.orderNo = orderNo;
        }

        public String getProductName() {
            return productName;
        }

        public void setProductName(String productName) {
            this.productName = productName;
        }

        public BigDecimal getPrice() {
            return price;
        }

        public void setPrice(BigDecimal price) {
            this.price = price;
        }

        public int getQty() {
            return qty;
        }

        public void setQty(int qty) {
            this.qty = qty;
        }
    }
}

2. Balise dataTable

Une page JSF, placez une balise commandLink dans l'en-tête de la colonne «Order No», si vous cliquez sur, triez la liste dataTable.



    
        
    
    

        

JSF 2 dataTable sorting example

Order No #{o.orderNo} Product Name #{o.productName} Price #{o.price} Quantity #{o.qty}

3. Demo

De haut en bas, affiche une liste dataTable triée par ordre croissant et décroissant.

jsf2-dataTable-Sorting-Example-1

jsf2-dataTable-Sorting-Example-2

jsf2-dataTable-Sorting-Example-3

Télécharger le code source

Téléchargez-le -JSF-2-DataTable-Sorting-Example.zip (10 Ko)